У меня есть следующий код, который просматривает файлы в папке и выполняет простой поиск и замену, а затем выводит результаты в другую папку.Я замечаю, что строка замены применяется дважды.
Например:
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)
Однако мне нужно вывести результаты в отдельную папку.