私は、フォルダ内のファイルをループし、単純な検索と置き換えを行って、結果を別のフォルダに出力する次のコードを持っています。私が気づいているのは、置換文字列が2回適用されるようです。例えばPythonの検索と置換が文字列の置換を複製していますか?
:
Search string: foo
Replace string: foo bar
Result: foo bar bar
は、ここに私のコードです。私は問題が明らかだと確信していますが、私はそれに私の指を置くことはできません。
def SearchReplace(directory, search, replace, filePattern):
for path, dirs, files in os.walk(os.path.abspath(directory)):
for filename in fnmatch.filter(files, filePattern):
filepath = os.path.join(path, filename)
outfile = os.path.join(outputdir, filename)
with open(filepath) as f:
s = f.read()
s = s.replace(search, replace)
with open(outfile, "w") as f:
f.write(s)
SearchReplace(inputdir, searchstr, replacestr, ext)
注:結果を別のフォルダに出力しないと、検索/置換が期待どおりに実行されます。つまり、下のコードはうまく機能します(同じフォルダ内の入力ファイルを変更します)。
def SearchReplace(directory, search, replace, filePattern):
for path, dirs, files in os.walk(os.path.abspath(directory)):
for filename in fnmatch.filter(files, filePattern):
filepath = os.path.join(path, filename)
with open(filepath) as f:
s = f.read()
s = s.replace(search, replace)
with open(filepath, "w") as f:
f.write(s)
SearchReplace(inputdir, searchstr, replacestr, ext)
ただし、結果を別のフォルダに出力する必要があります。
元のテキストは何ですか?最初に 'foo bar'だった場合... – cha0site