2011-09-19 69 views
6

我正在編寫一個簡單的Python腳本來重命名目錄中的所有文件,以用連字符替換文件名中的所有空格。我這是對os.rename崩潰重命名包含空格的文件名

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(" ", "-"))) 

給出了控制檯錯誤如下:

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

上爲什麼發生這種情況的任何想法?

回答

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

+1實際的錯誤是,你不及格的參數列表'os.path.join' - 您連接一個文本字符串+,而不是通過一個逗號 - 分開的列表 - 但由於這是多餘的,只是把它拿出來。 – tripleee