2017-03-11 5 views
-4

SO!私はかなりPythonを初めて使いました。私は、特定の行を他の行に置き換えるために必要な一連のファイルを用意しています。複数の文字列を複数のテキストファイルに置き換えるにはどうすればよいですか?

これはちょっと混乱するかもしれませんが、私に説明させてください。

私はファイルがいっぱいのディレクトリを持っていますので、temp /としましょう。

Pythonを使用して、そのディレクトリ内のすべてのファイルを繰り返し処理し、各ファイルを変更して特定の行を置き換える必要があります。このため

、私は1つのファイルが

ReplaceWithThis 
iLikeReplacingStuff 

newStrings.txtと呼ば持つようにしたいと私はコードされているこれらの文字列は、からoldStrings.txt

I hate this string 
Please get rid of me 
+0

あなたが尋ねていることは少し不明です。特定のキーワードを複数のファイルに置き換えますか?複数のファイルで特定のパターンを検出して置き換えたいですか?どのようにそれらのファイルを探したいですか?ファイル名は特定のパターンを満たす必要がありますか?それはすべて現時点では非常に「空気中」です。 – byxor

+0

いいえ、私は "HelloWord"のために頼んでいます。私は "ByeWorld"と置き換えたいと思います。しかし、私はすべてのファイルを1行ずつ調べることができないので、 – John

+2

スタックに良い質問をする方法を読んで時間を割いたほうがいいでしょう。 http://stackoverflow.com/help/how-to-ask – datawrestler

答えて

0

を行を交換したいですポスターの要求ごとに調整されています。

import os 

folderLocation = "temp/" 

lookup = dict() 

with open("newString.txt","r") as values: 
    with open("oldString.txt","r") as keys: 
     keyLines = keys.readlines() 
     valueLines = values.readlines() 
     for i, line in enumerate(keyLines): 
      lookup[line] = valueLines[i] 


for subdir, dirs, files in os.walk(folderLocation): 
    for fileIn in files: 
     os.rename(folderLocation + fileIn, folderLocation + "old_" + fileIn) 
     with open (folderLocation + "old_" + fileIn, "r") as fi: 
      with open(folderLocation + fileIn, "w") as fo: 
       for line in fi: 
        if line in lookup: 
         fo.write(lookup[line]) 
        else: 
         fo.write(line) 
+0

あなたはより良い方法でファイル名を格納することができます。タプルのリストはどうですか?各リストエントリには、「古い」と「新しい」名前がタプルでまとめられています。この方法では、複数の文字を分割することに悩まされることはありません – byxor

+0

OldFineName1.txtはファイル名ではありません。私はHelloWorld.txtと呼ばれるファイルを持っていて、 "Welcome to world"という言葉があります。HelloWorld.txtの中で私は "Welcome to world"を何かに変更することを望んでいません。あなたは良いソリューションを知っていますか? – John

+0

temp.old.txtとtemp.new.txtのような命名規則はありますか?あなたが望むものに上の文字列を変更することができますので、 "" example.txt | new_example.txt ""。 – Neil

関連する問題