【问题标题】:Renaming files in Python: No such file or directory在 Python 中重命名文件:没有这样的文件或目录
【发布时间】:2017-01-15 11:22:51
【问题描述】:

如果我尝试重命名目录中的文件,由于某种原因会出现错误。 我认为问题可能是我没有以正确的格式插入目录?

附加信息: 蟒蛇2 & linux机器

OSError: [Errno 2] 没有这样的文件或目录

虽然它可以很好地打印目录内容。我做错了什么?

import os

for i in os.listdir("/home/fanna/Videos/strange"):
    #print str(i)
    os.rename(i, i[:-17])

【问题讨论】:

标签: python


【解决方案1】:

os.rename() 需要您要重命名的文件的完整路径。 os.listdir 只返回目录中的文件名。试试这个

import os
baseDir = "/home/fanna/Videos/strange/"
for i in os.listdir( baseDir ):
    os.rename( baseDir + i, baseDir + i[:-17] )

【讨论】:

  • 这解决了我的问题!!没想到它也没有包含路径!
  • 很高兴它成功了。我已经编辑了答案,以更明确地说明 os.listdir 返回的内容。请记住,您可以通过左侧的绿色复选标记接受最适合您的答案。
【解决方案2】:

假设有一个文件/home/fanna/Videos/strange/name_of_some_video_file.avi,并且您正在从/home/fanna 运行脚本。

iname_of_some_video_file.avi(文件名,不包括完整路径)。所以当你运行时

os.rename(i, i[:-17])

你在说

os.rename("name_of_some_video_file.avi", "name_of_some_video_file.avi"[:-17])

Python 不知道这些文件来自/home/fanna/Videos/strange。它根据当前工作目录解析它们,因此它正在寻找/home/fanna/name_of_some_video_file.avi

【讨论】:

    【解决方案3】:

    我有点晚了,但它发生的原因是os.listdir 只列出了该目录中的项目,但工作目录仍然是 python 脚本所在的位置。

    所以要解决这个问题添加:

    os.chdir(your_directory_here)
    

    就在 for 循环之前,其中 your_directory_here 是您用于 os.listdir 的目录。

    【讨论】:

      猜你喜欢
      • 2018-09-14
      • 2019-10-15
      • 1970-01-01
      • 2014-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多