2012-04-23 10 views
1

を移動すると、私のバッチファイルの名前を変更し、os.rename()機能で、これまで私のバッチファイルのリネームでPythonのos.rename()に問題がある。ここでスクリプト

import os, re, shutil, random 

mainpath = 'C:\\Users\\s3z\\Desktop\\pytest' 
dirs = [d for d in os.listdir('.') if os.path.isdir(d)] 

for index, name in enumerate(dirs): 
    subpath = name 
    os.chdir(name) 
    images = [i for i in os.listdir('.') if i[-4:] in ('.png', '.jpg', 'jpeg')] 
    basename = re.sub(r'\W+', '', name[0:10]) 
    randid = str(random.uniform(0,1))[-4:] 
    for index, f in enumerate(images): 
     path = os.path.join(mainpath, subpath) 
     if f[-4:] == 'jpeg': 
      ext = '.jpeg' 
     else: 
      ext = f[-4:] 
     os.rename(os.path.join(path, f), os.path.join(path, basename + '_' + randid + '_' + str(index) + ext) 
     shutil.move(f, '..\..\COMMON') 
    os.chdir(os.pardir) 

私が午前問題のスクリプトを動かしています。私は、スクリプトを実行すると、私は

File "bulk_image_organizer.py", line 19 
    shutil.move(f, '..\..\COMMON') 
     ^
SyntaxError: invalid syntax 

そして、私はラインアウト取る19

shutil.move(f, '..\..\COMMON')

と再び

File "bulk_image_organizer.py", line 19 
    os.chdir(os.pardir) 
    ^
SyntaxError: invalid syntax 

しかし、私にエラー変更を、それを実行しようとし得ますスクリプトが正常に動作するos.rename()行を削除します。また、以下の

>>> for index, f in enumerate(images): 
...  os.rename(os.path.join(path, f), os.path.join(path, "new" + st 
r(index) + ".jpg")) 
... 

にそれが正常に動作しますように私は、forループでのPython interpretterにos.rename()ラインを実行したとき。だから私のスクリプトでは何が変わっていますか?

答えて

8

問題は、os.renameまたはos.chdirとは関係ありません。前の行に閉じ括弧がありません:

os.rename(os.path.join(path, f), 
      os.path.join(path, basename + '_' + randid + '_' + str(index) + ext) 
#                   ^
関連する問題