2016-11-16 21 views
0

私がファイルを見つけた場合、私はチェックまずPython:Pythonでファイルの名前を変更する方法は?

rain201401.dat

として rain2014-01-01.datというフォルダ内のファイルを持って、それを名前を変更したいです。

rain2013-01-01.dat 

を返し

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

は、その後、私はそれをあなたがos.listdir('mypath')からファイルを持っているので

--------------------------------------------------------------------------- 
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'ではないことを実現:あなたはパターンを使用することができますので、代わりにglobを使用しますか? –

答えて

0

を返し

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

名前を変更しようとする、その完全な名前ですmypath/rain2014-01-01.datではなく、rain2014-01-01.datです。

ディレクトリ名に接頭辞がなく、同じ名前のファイルがカレントディレクトリに存在しない場合、指定されたエラーは完全に予想されます。

mypathを基準にして名前を取得する場合は、os.path.join('mypath', string)またはos.path.join('mypath', stringnew)を使用してください。

0

os.listdirは、フルパスではなくファイル名を返します。

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) 
関連する問題