题
我想重新命名了一些文件,但得到一个莫名其妙的错误*。当我运行这样的:
if os.path.isfile(fullPath):
print 'fmf exists'
print fullPath
print newFilePath
os.rename(fullPath,newFilePath)
我得到以下错误:
fmf exists
(correct fullPath)
(correct newFilePath, ie. destination)
Traceback (most recent call last):
File "whatever.py", line 374, in ?
os.rename(fullPath,newFilePath)
OSError: [Errno 2] No such file or directory
由于我的知道的,在FULLPATH该文件存在,我被错误百思不得其解。当然,newFilePath不存在的,因为那将是愚蠢的。任何提示?
谢谢! 亚历
*还不都是?
解决方案
您仍然可以得到异常,如果您尝试复制到不存在的目录。
其他提示
我看不到你的代码的全部内部工作,所以这里是我的两分钱的价值:
您newFilePath可能包含不存在的一个目录。如果是这样的话,那么根据您的操作系统上,你的程序将无法创建不存在的目录中的文件。这可能是你的错误。
希望这有助于
这似乎是海报解决他的问题,但我有同样的症状,原因似乎是不同的。我试图重命名文件刚刚在上一行的子进程调用创建。如果我再次跑到我的剧本,我没有重命名问题,因为文件已在以前的运行被创建,但如果我删除先前创建的文件,我会重命名得到了同样的问题。好像os.rename完成子进程之前,获取调用,并改名因此还不存在的文件。我插入子调用之后os.wait(),我认为,这解决了我的问题。
我有同样的错误,当我的新的文件名中包含正斜杠,这是混淆在Unix和Linux目录分隔符。例如,重命名文件到“4月27日/ 2015.txt”导致了不存在的目录,并导致“没有这样的文件或目录”。可以通过用任何其它可接受字符替换正斜杠解决这个问题。
不隶属于 StackOverflow