Это быстрая проблема у меня с Python. Это моя проблема здесь: я пытаюсь внедрить TXT-файл в другой TXT-файл в определенной строке. Вот что я попробовал:

# Modify TXT File
with open("avengers.txt", "w") as file1, open("guardians.txt", 'r') as file2:

    for line in file1:
        print line
        if line == 'Blackwidow':
            for line2 in file2:
                file1.write(line2)

Но это дает мне что-то странное (много строк разрыва)

Avengers.txt

This is the avengers

List of the characters :
Captain America
Iron Man
Hulk
Hawkeye
Blackwidow

The story is great
About about the movies :
....
....

Guardians.txt

Groot
Rocket
Star Lord
Gamora
Drax

----- РЕЗУЛЬТАТ ----

То, что я хочу сделать, это просто:

Avengers.txt

This is the avengers

List of the characters :
Captain America
Iron Man
Hulk
Hawkeye
Blackwidow
Groot <---------------- Insert text here
Rocket
Star Lord
Gamora
Drax

The story is great
About about the movies :
....
....

Спасибо большое за помощь

2
MagicaNexus 27 Май 2019 в 22:24

2 ответа

Лучший ответ

Используя метод readlines, вы можете превратить текст в объект списка. Затем найдите индекс строки, поместите после нее текст:

with open("avengers.txt", "r+") as file1, open("guardians.txt", 'r') as file2:
    file_new = file1.readlines()
    file1.seek(0)
    bw_index = file_new.index('Blackwidow\n')
    file_new = file_new[:bw_index+1] + file2.readlines() + file_new[bw_index+1 :]
    file1.write(''.join(file_new))
2
Masoud 27 Май 2019 в 20:52
with open("avengers.txt", "r+") as f1, open("guardians.txt") as f2:
    line = f1.readline()
    while line:
        if line.startswith("Blackwidow"):
            offset = f1.tell()
            rest_of_file = f1.readlines()
            f1.seek(offset)
            f1.writelines(f2.readlines())
            f1.writelines(rest_of_file)
            break
        line = f1.readline()
2
Olvin Roght 27 Май 2019 в 20:02