Как добавить текст в указанную c строку файла? - PullRequest
0 голосов
/ 14 апреля 2020

У меня уже есть куча файлов, и я должен добавить в них текстовую строку в первой строке. Я пытался сделать это с seek(), но этот метод переопределяет текст из первой строки. Я ищу что-то, что меняет все и добавляет текст.

def add_line(file):
    with open(file,'r+') as f:
        text="my_text"
        for line in f:
            if text in line:
                break
        else:
            f.write(text)
            print("Text was added in\n"+ file)

Ответы [ 2 ]

2 голосов
/ 14 апреля 2020

вы можете использовать:

def add_line(file):
    with open(file) as f:
        lines = f.readlines()

    text = 'my_text\n'
    lines.insert(0, text)
    with open(file, 'w') as f:
        f.write(''.join(lines))

вы читаете все строки, вставляете новую строку с индексом 0, а затем записываете в свой файл все строки + вашу новую строку, таким образом вы можете вставьте новую строку в любой индекс, который вы хотите

2 голосов
/ 14 апреля 2020

Вы не можете. Он называется смещением файла, и он не перемещается автоматически, если вы переопределяете данные, на которые он указывает.

Сначала вам нужно прочитать файл, а затем открыть новый файл (здесь вы можете переопределить файл) и записать данные, как вам нужно. Рассмотрим этот файл:

→ cat file.text
line1
line2
line3

И этот код

lines = ""
with open('file.text', 'r') as f:
    lines = f.read()

with open('file.text', 'w') as newf:
    newf.write("new first line\n")
    newf.write(lines)

После его выполнения содержимое файла будет выглядеть так:

→ cat file.text
new first line
line1
line2
line3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...