【问题标题】:Having trouble with Python os.rename() in my batch file renaming and moving script在我的批处理文件重命名和移动脚本中遇到 Python os.rename() 问题
【发布时间】:2012-05-04 13:21:51
【问题描述】:

到目前为止,这是我的批处理文件重命名和移动脚本

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)

我遇到了os.rename() 函数的问题。当我运行脚本时,我得到了

  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() 行时,脚本可以正常工作。此外,当我在 Python 解释器中的 for 循环中运行 os.rename() 行时,如下所示

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

它工作正常。那么我的脚本出了什么问题呢?

【问题讨论】:

    标签: python file-io for-loop operating-system


    【解决方案1】:

    问题与os.renameos.chdir 无关。您在之前的行中缺少右括号:

    os.rename(os.path.join(path, f),
              os.path.join(path, basename + '_' + randid + '_' + str(index) + ext) 
    #                                                                             ^
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多