2016-11-16 4 views
0

나는 rain2014-01-01.dat라는 폴더에있는 파일을 가지고 파일을 발견하면 내가 확인 rain201401.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) 
관련 문제