在Python中重命名文件:没有这样的文件或目录

时间:2016-09-07 16:52:42

标签: python

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

其他信息: python 2& linux机器

  

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

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

import os

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

3 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分: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

答案 2 :(得分:0)

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

所以要解决问题,请添加:

os.chkdir(your_directory_here)

就在for循环之前" your_directory_here"是您用于os.listdir()的目录。