2011-09-19 5 views
6

간단한 파이썬 스크립트를 작성하여 파일 이름의 모든 공백을 하이픈으로 바꾸려면 디렉토리의 모든 파일의 이름을 바꾸십시오. 왜 이런 일이에공백이있는 파일 이름의 이름 바꾸기

Traceback (most recent call last): 
    File "<stdin>", line 2, in <module> 
OSError: [Errno 2] No such file or directory 

어떤 아이디어 : 나는

import os 

path = os.getcwd() 
filenames = os.listdir(path) 

for filename in filenames: 
    os.rename(os.path.join(path + filename), os.path.join(path + filename.replace(" ", "-"))) 

콘솔에서 오류를 제공 os.rename에 충돌 한 다음이?

답변

19

을 os.path.join에 가입하려는 항목은 쉼표로 구분 된 두 개의 별개의 인수로 제공되어야합니다. 이것은 나를 위해 잘 작동 :

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import os 
>>> path = os.getcwd() 
>>> filenames = os.listdir(path) 
>>> for filename in filenames: 
...  os.rename(os.path.join(path, filename), os.path.join(path, filename.replace(' ', '-'))) 
... 
>>> 
8

당신이 이름을 바꿀 파일이 들어있는 디렉토리에 이미있는 경우에는 절대 경로를 제공 할 필요가 없습니다 : 나는 당신이 당신의 전화에서 잘못된 구문을 가지고 있기 때문에 그냥 생각

for filename in filenames: 
    os.rename(filename, filename.replace(" ", "-")) 
+1

한 실제 오류가 당신이 os.path.join''에 인수 목록을 전달되지 않습니다 - 당신은 +와 리터럴 문자열을 연결하는 대신 쉼표를 전달 - 분리 된 목록 -하지만 중복되므로 그냥 꺼내십시오. – tripleee