我想重新命名了一些文件,但得到一个莫名其妙的错误*。当我运行这样的:

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”导致了不存在的目录,并导致“没有这样的文件或目录”。可以通过用任何其它可接受字符替换正斜杠解决这个问题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top