2011-09-19 23 views
6

私はディレクトリ内のすべてのファイルの名前を変更してファイル名のすべてのスペースをハイフンに置き換える簡単なPythonスクリプトを作成しています。空白を含むファイル名の名前を変更する

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

なぜこれが起こっている上の任意のアイデアを:私は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(" ", "-"))) 

はコンソールでエラーになりますか?

答えて

19

私はそれはあなたがあなたの呼び出しで間違った構文を持っているという理由だけだと思いますos.path.joinに参加するアイテムは、2つの異なる引数としてカンマで区切って指定する必要があります。これは私のために正常に動作します:

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

関連する問題