我在名为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
答案 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)