Замена строки для всего текстового файла в Python 3.x? - PullRequest
5 голосов
/ 03 июня 2010

Как я могу заменить строку другой строкой в ​​данном текстовом файле. Должен ли я просто пройти через readline () и запустить замену при сохранении в новый файл? Или есть лучший способ?

Я думаю, что мог бы прочитать все это в памяти, но я ищу более элегантное решение ...

Заранее спасибо

Ответы [ 3 ]

11 голосов
/ 03 июня 2010

fileinput - это модуль из стандартной библиотеки Python, который поддерживает «то, что выглядит как обновление текстовых файлов на месте», а также различные другие связанные задачи.

for line in fileinput.input(['thefile.txt'], inplace=True):
    print(line.replace('old stuff', 'shiny new stuff'), end='')

Этот код все , необходимый для выполнения конкретной задачи, которую вы упомянули - он решает все проблемы (запись в другой файл, удаление старого по завершении и замена его новым. ). Вы также можете добавить еще один параметр, например backup='.bk', чтобы автоматически сохранить старый файл как (в данном случае) thefile.txt.bk, а также обработать несколько файлов, взять имена файлов для обработки из командной строки и т. Д. И т. Д. - do прочитайте документы, они довольно хороши (как и модуль, который я предлагаю! -).

4 голосов
/ 03 июня 2010

Если файл можно сразу прочитать в память, я бы сказал, что

old = myfile.read()
new = old.replace("find this", "replace by this")
output.write(new)

по меньшей мере так же читабельно, как

for line in myfile:
   output.write(line.replace("find this", "replace by this"))

и это может быть немного быстрее, но в конце это, вероятно, не имеет значения.

0 голосов
/ 03 июня 2010
...