2014-07-16 52 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)