我想知道os.rename()
:尽管os.path.exists()
表示该文件存在,但os.rename()
表示无法找到它。这是代码片段:
try:
if (os.path.exists(sourcePath)):
print('Safe: %s does exist!' % sourcePath)
os.rename (sourcePath, newPath)
except Exception as e:
print('Error renaming "%s":' % sourcePath)
raise e
在名为Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG
的文件上运行此命令会产生以下输出:
Safe: Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG does exist!
Error renaming "Y:\home\Paul\PaulsBilder\images\..\import\batch0\2012-05 Neuruppin\12-05 - 0 2.JPG":
Traceback (most recent call last):
:
WindowsError: [Error 3] Das System kann den angegebenen Pfad nicht finden
(德语Windows:“系统找不到指定的路径。”)我一直在使用这段代码而没有问题,但可能永远不会在带有空格的文件名上...但是当我用空格替换空格时下划线,仍无法找到文件名。
其他一切都必须是错的,但是什么?
编辑:删除/../
组件(通过在其周围包裹os.normpath()
)没有帮助。
答案 0 :(得分:0)
非常感谢,Skycc,你是完全正确的:发生错误是因为新路径名的目录不存在。傻我。
这个有用 - 确保os.makedirs()
只被调用一次:
try:
if (os.path.exists(sourcePath)):
print('Safe: %s does exist!' % sourcePath)
(head, tail) = os.path.split(newPath) # @UnusedVariable
if (not os.path.exists(head)):
os.makedirs(head)
os.rename(sourcePath, newPath)
except Exception as e:
print('Error renaming "%s" to "%s":' % (sourcePath, newPath))
raise e