2017-05-19 13 views
3

特定の単語のフォルダ内のすべてのファイルを調べ、その単語をスペースで置き換えるpythonスクリプトがあります。スクリプトを実行するたびに見えるように言葉を変更するのではなく、スクリプトの新しい単語を追加して、同じ置換アクションを探して実行したいと考えています。文字を削除してファイル名を置換するPythonスクリプト

私はこれをmacOS El Capitanで実行しています。以下はスクリプトです:

import os 

paths = (os.path.join(root, filename) 
     for root, _, filenames in os.walk('/Users/Test/Desktop/Test') 
     for filename in filenames) 

for path in paths: 
    # the '#' in the example below will be replaced by the '-' in the filenames in the directory 
    newname = path.replace('.File',' ') 
    if newname != path: 
     os.rename(path, newname) 

for path in paths: 
    # the '#' in the example below will be replaced by the '-' in the filenames in the directory 
    newname = path.replace('Generic',' ') 
    if newname != path: 
     os.rename(path, newname) 

あなたはこの初心者に提供できるヘルプがあります。

答えて

5

辞書を使用して置換を追跡します。

import os 

paths = (os.path.join(root, filename) 
     for root, _, filenames in os.walk('/Users/Test/Desktop/Test') 
     for filename in filenames) 

# The keys of the dictionary are the values to replace, each corresponding 
# item is the string to replace it with 
replacements = {'.File': ' ', 
       'Generic': ' '} 

for path in paths: 
    # Copy the path name to apply changes (if any) to 
    newname = path 
    # Loop over the dictionary elements, applying the replacements 
    for k, v in replacements.items(): 
     newname = newname.replace(k, v) 
    if newname != path: 
     os.rename(path, newname) 

これは一度にあなたの交換のすべてを適用し、一度だけのファイルの名前を変更します。あなたはそのようにのようにそのキーと値を超えるループは、することができます。

1

コードブロックを何度も何度も何度も何度も繰り返し使用しているときは、通常はそれらを機能に変えるのが最善です。

Pythonでは、関数を定義するのが素早く簡単です。それらは使用する前に定義する必要があるため、通常はインポート文の後にファイルの先頭に移動します。

def func_name(paramater1,paramater2...):

次に、関数のすべてのコードがdef句の下にインデントされています

構文は次のようになります。

for path in pathsステートメントとそれをすべて関数の一部として配置し、検索する単語をパラメータとして渡すことをお勧めします。

次に、関数を定義した後、あなたはファイル名に置き換えたいすべての単語のリストを作ることができ、およびように機能を実行します。

word_list = [.File, Generic] 
for word in word_list: 
    my_function(word) 
+0

ああ、私はちょうど私の前に答えを見ました、私はそれがはるかに効率的な一度だけファイル名を編集する方法が好きです。私はあなたが彼らの答えを使用することをお勧めしますが、私はこの代替アイデアが有用であると思ったら私を残しておきます。 –

関連する問題