print(path) print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension)
第1和第2行是debugging和语句,这些打印:
D:\Doc\Papa\Photos\2012\2012_07_divers\CSC_3709.jpg D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg
3号线提高:
File "D:\Doc\Papa\scripts\python\photosort\photosort.py", line 83, in rename os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension) WindowsError: [Error 183] Impossible de créer un fichier déjà existant
这意味着:
WindowsError: [Error 183] Can not create a file that already exists
在Python 3.3+上,您可以使用os.replace()而不是os.rename()来覆盖现有文件,并避免Windows上的错误。
在较老的Python版本中,您可以使用ctypes模块来模拟os.replace()
:
# MOVEFILE_REPLACE_EXISTING = 0x1; MOVEFILE_WRITE_THROUGH = 0x8 ctypes.windll.kernel32.MoveFileExW(src, dst, 0x1)
看看如何在Windows上实现atomicfile.atomic_rename()
。
从Windows系统错误代码列表 :
ERROR_ALREADY_EXISTS
183(0xB7)
该文件已存在时无法创建文件。
您正试图创建一个已经存在的文件。 先删除它或选择一个不同的文件名。
作为奖励提示:使用os.path.join()
函数来正确地加入路径:
os.path.join(dir_name, '{0}_{1}_{2}{3}'.format(f_parent, parts[0], date, extension))
我也使用字符串格式来创建您的文件名。
你试图使用的名字已经属于某种东西。 也就是说,已经有一个文件叫做:
D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg
添加一个支票到你的功能