print(path)
print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension)
os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension)
第1行和第1行2是调试和语句,这些打印:
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
答案 0 :(得分:5)
在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()
。
答案 1 :(得分:3)
来自Windows system error codes list:
ERROR_ALREADY_EXISTS
183(0xB7)
当该文件已存在时无法创建文件。
您正在尝试创建已存在的文件。首先删除它或选择不同的文件名。
作为奖励提示:使用os.path.join()
功能正确加入路径:
os.path.join(dir_name, '{0}_{1}_{2}{3}'.format(f_parent, parts[0], date, extension))
我还使用string formatting来创建你的文件名。
答案 2 :(得分:0)
您尝试使用的名称已属于某些内容。即,已经存在一个名为:
的文件D:\Doc\Papa\Photos\2012\2012_07_divers\2012_07_divers_CSC_3709_2012_07_06_21_04_26.jpg
为您的功能添加支票