Страницы

Поиск по вопросам

четверг, 15 ноября 2018 г.

Заменить слово в файле

Нужно открыть файл, найти и заменить в нем одно слово (оно встречается в файле 1 раз) и сохранить под другим названием.
На баше эта задача решается вот так:
cat /tmp/test/file | sed "s/TEST_OLD/TEST_OLD/"> /tmp/test/file_new
C Питоном не очень, представляю что проблема решается как-то примерно так:
import re output_file = open("/tmp/test/file").readlines() string = "TEST_OLD" string.replace(string,"TEST_NEW") open("/tmp/test/file_new", "w")


Ответ

Ну в целом верно, только модуль re не нужен, также стоит либо использовать with, либо закрывать файлы file.close() после использования. Как то так в конечном итоге:
with open('test1') as file_in: text = file_in.read()
text = text.replace("TEST_OLD", "TEST_NEW")
with open("test2", "w") as file_out: file_out.write(text)
Да и readlines() возвращает список строк и это не совсем то что нам здесь нужно.
Update 0:

Для замены лучше использовать регулярные выражения, чтобы избежать проблем при включении слова в другие и т.д. Спасибо @ReinRaus за замечание.
Обрати внимание на ответ @andy.37 Если файл объемный, то read() плохая идея, поскольку так мы загрузим все содержимое файла в память. Правильный выбор в этом случае - построчное чтение/запись.

Комментариев нет:

Отправить комментарий