Python:如何在python中重命名文件?

时间:2016-11-16 22:19:44

标签: python rename

我在名为rain2014-01-01.dat的文件夹中有一个文件,并希望将其重命名为rain201401.dat

首先,我检查是否找到文件;

import os
path = "./mypath"
string = "rain2014-01-01.dat"
for filename in os.listdir(path):
    if filename.endswith(string):
        print (filename)

返回

rain2013-01-01.dat

然后我尝试重命名

i = 0
for filename in os.listdir(path):
    if filename.endswith(string):
        stringnew = 'rain%d%d.dat'%(year,i)
        os.rename(string,stringnew)

返回

---------------------------------------------------------------------------
OSError                                   Traceback (most recent call last)
<ipython-input-57-709ba44fed3d> in <module>()
      7     if filename.endswith(string):
      8         stringnew = 'rain%d%d.dat'%(year,i)
----> 9         os.rename(string,stringnew)
     10         print (filename)

OSError: [Errno 2] No such file or directory

2 个答案:

答案 0 :(得分:0)

由于您从os.listdir('mypath')获取了该文件,因此其全名为mypath/rain2014-01-01.dat,而不是rain2014-01-01.dat

如果目录名没有前缀,并且当前目录中不存在同名文件,则完全可以预期给出错误。

使用os.path.join('mypath', string)os.path.join('mypath', stringnew)获取与mypath相关的名称。

答案 1 :(得分:0)

os.listdir仅返回文件名,而不是完整路径。请改用glob,以便使用模式:

import glob
pattern = "./mypath/*rain2014-01-01.dat"
for filename in glob.iglob(pattern):
    stringnew = 'rain%d%d.dat' % (year, i)
    os.rename(string,stringnew)