2014-07-16 61 views
-1

我已經檢查了所有可以嘗試修復此代碼的東西。這可能只是我看不到的東西,但我今天從字面上理解了這種語言。我一直得到無效的語法。有人可以查看我的代碼嗎?Python函數中的語法錯誤

import glob, os, datetime, sys, time, shutil 


def rename(dir1, dir2): 
    filenum = 1 
    date = time.strftime("%d%m%Y") 
    fileiter = glob.iglob(os.path.join(dir1, r'*.mp4') 
    for filen in fileiter: 
     print(filen); 
     filename = dir2 + filen + date + filenum + r'.mp4' 
     filedir1 = dir1 + filen 
     shutil.copy2(filedir1, dir2); 
     filedir2 = dir2 + filen 
     os.rename(filedir2, filename); 
    print("Copying Done!");   
return; 

starting_dir = input("Enter Input Directory: ") 
if len(starting_dir) == 0: 
    print("Actually Enter Enter Something") 
    sys.exit() 
output_dir = input("Enter Output Directory: ") 
if len(output_dir) == 0: 
    print("Actually Enter Enter Something") 
    sys.exit() 
rename(starting_dir, output_dir) 
+1

您的代碼是否正確複製粘貼?如果是這樣,一個問題是'return'應該和'rename'函數的其餘部分處於同一級別的縮進級別。 – Marius

+0

**語法**錯誤可能是'fileiter = glob.iglob(os.path.join(dir1,r'*。mp4')'(丟失了一個parens) –

+1

分號不需要在Python中,分號允許對於同一行上的多條語句 – joemeilinger

回答

2

在python中,如果你沒有指定返回值,它會自動返回None。在你的代碼中,你的return語句的縮進是關閉的。只要刪除它就足夠了。以下是正確的代碼:

import glob, os, datetime, sys, time, shutil 


def rename(dir1, dir2): 
    filenum = 1 
    date = time.strftime("%d%m%Y") 
    fileiter = glob.iglob(os.path.join(dir1, r'*.mp4')) 
    for filen in fileiter: 
     print(filen); 
     filename = dir2 + filen + date + filenum + r'.mp4' 
     filedir1 = dir1 + filen 
     shutil.copy2(filedir1, dir2); 
     filedir2 = dir2 + filen 
     os.rename(filedir2, filename); 
    print("Copying Done!"); 

starting_dir = input("Enter Input Directory: ") 
if len(starting_dir) == 0: 
    print("Actually Enter Enter Something") 
    sys.exit() 
output_dir = input("Enter Output Directory: ") 
if len(output_dir) == 0: 
    print("Actually Enter Enter Something") 
    sys.exit() 
rename(starting_dir, output_dir)