如果我尝试重命名目录中的文件,由于某种原因我收到错误。 我认为问题可能是我没有以正确的格式插入目录?
其他信息: 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])
答案 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
中的脚本。
i
是name_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()的目录。