2016-11-16 85 views
0

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

首先我检查,如果发现该文件;

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 
+0

你会意识到,'rain2014-01-01.dat'不是'mypath中/ rain2014-01-01.dat',对不对? –

回答

0

自您os.listdir('mypath')拿到了文件,它的全称是mypath/rain2014-01-01.dat,而不是rain2014-01-01.dat

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

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

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)