无法使用os.rename更改文件名,因为[Errno 2]没有这样的文件或目录

时间:2018-12-05 19:59:05

标签: python-2.7

我有几个文件名,其名称类似于:201810160820。我想将名称更改为date + time,因此该文件将重命名为:16/10/2018 08:20。

我编写了以下代码:

#!/usr/bin/python
import os

os.chdir('/root/Desktop/calls')

for name in os.listdir('.'):
    newname = name[len(name)-6:len(name)-4]+'/'+name[len(name)-8:len(name)-6]+'/'+name[len(name)-12:len(name)-8]+' '+name[len(name)-4:len(name)-2]+':'+name[len(name)-2:len(name)]    
    os.rename(name, newname)

我收到一个错误:[Errno 2]没有这样的文件或目录 我在使用kali linux的python 2.7上编写此代码。 文件已经存在,如果不执行循环,则可以更改文件名。 问题出在哪里?

1 个答案:

答案 0 :(得分:0)

os.listdir()仅返回文件名,而不返回路径名。您应该使用os.path.join将目录名与文件名连接起来,以便os.rename找到它们:

dir = '.'
for name in os.listdir(dir):
    newname = name[len(name)-6:len(name)-4]+'-'+name[len(name)-8:len(name)-6]+'-'+name[len(name)-12:len(name)-8]+' '+name[len(name)-4:len(name)-2]+'-'+name[len(name)-2:len(name)]    
    os.rename(os.path.join(dir, name), newname)

请注意,文件名不能包含'/'':',因此您应使用-之类的分隔符。