mat*_*ier 3 python windows file errno
print(path)
print(dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension)
os.rename(path, dir_name+"\\"+f_parent+"_"+parts[0]+"_"+date+extension)
Run Code Online (Sandbox Code Playgroud)
第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
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
转换为:
WindowsError: [Error 183] Can not create a file that already exists
Run Code Online (Sandbox Code Playgroud)
在Python 3.3+上,您可以使用os.replace()而不是os.rename()来覆盖现有文件并避免Windows上的错误.
在较旧的Python版本上,您可以os.replace()使用ctypes模块进行模拟:
# MOVEFILE_REPLACE_EXISTING = 0x1; MOVEFILE_WRITE_THROUGH = 0x8
ctypes.windll.kernel32.MoveFileExW(src, dst, 0x1)
Run Code Online (Sandbox Code Playgroud)
了解如何atomicfile.atomic_rename()在Windows上实现.