为什么我的os.rename不工作?

0 投票
4 回答
4696 浏览
提问于 2025-04-15 21:01

我正在尝试重命名一些文件,但遇到了一个让我困惑的错误。 当我运行这个:

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是不存在的,因为那样做没有意义。有没有什么提示?

谢谢!
亚历克斯

*难道不是所有的错误都是这样吗?

4 个回答

0

看起来发帖的人解决了他的问题,但我遇到的情况虽然相似,但原因似乎不同。我试图重命名的文件是在前一行的子进程调用中刚刚创建的。如果我再次运行我的脚本,就不会遇到重命名的问题,因为文件是在上一次运行时创建的。但是如果我删除了之前创建的文件,就会再次遇到重命名的问题。看起来是因为在子进程完成之前就调用了os.rename,所以要重命名的文件还不存在。我在子进程调用后插入了os.wait(),我觉得这解决了我的问题。

1

我看不到你代码的全部细节,所以我只能给你一些建议:

你的newFilePath可能包含一个不存在的文件夹。如果是这样的话,根据你的操作系统,你的程序就无法在一个不存在的文件夹里创建文件。这可能就是你出错的地方。

希望这能帮到你。

2

如果你尝试把东西复制到一个不存在的文件夹里,还是会出现错误。

撰写回答