Как заменить только одну указанную строку в Python - PullRequest
0 голосов
/ 25 октября 2019

У меня есть файл, и я хочу заменить определенную строку, чтобы найти ее с помощью поиска в файле. Мне нравится следующее из этого поста :

import fileinput
new_line = 'some text'
with fileinput.FileInput(file_addr, inplace=True) as file:
    for line in file:
        if 'keyword' in line:
             line = new_line
             # Here #
        print(line)

Теперь я хочу завершить цикл в # Here #. В этом месте я нашел строку и заменил ее. Но если я break зациклюсь, остальная часть файла не будет записана в файл и будет удалена. Я ищу метод, просто замените строку при ее нахождении и затем завершите цикл. Причина в том, что длина файла может быть большой, и я не хочу зацикливаться на остальной части файла.

Кроме того, если для обоих случаев существует решение, что длина new_line равна длине строки или нет (если это имеет значение).

1 Ответ

1 голос
/ 25 октября 2019

Это можно сделать только в том случае, если длина строки замены равна исходной линии. Затем вы можете сделать это, открыв файл в режиме чтения-записи и переписав строку в файле.

new_line = 'some text'
with open(file_addr, 'r+') as f:
    while True:
        line = f.readline()
        if 'keyword' in line:
            f.seek(-len(line), 1)
            f.write(new_line)
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...