Скопируйте содержимое одного файла (данные) в другой файл файла в определенной области, используя логику python.

У меня есть хороший опыт программирования на языке C, и я начал работать над python с помощью C Backround.

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

f = open("1.txt", "r")
contents = f.readlines()
f.close()

with open("2.txt") as f:
    data = f.read().rstrip("\n")   

line =19
contents.insert(line, data)

f = open("1.txt", "w")
contents = "".join(contents)
f.write(contents)
f.close()

Эта логика работает очень хорошо, но проблема, с которой я сталкиваюсь, заключается в том, что последняя строка записывается сразу после содержимого 1.txt. (Но, согласно моему требованию, он должен начинаться со следующей строки) даже я пробовал с «\ n», но я не могу этого добиться.

Для большей ясности, как показано ниже.

1.текст:

   hello
    hello
    hello
    hello

2.текст:

123
456
789
451
234

предположим, если я выполню свой код для вышеуказанных файлов 1.txt и 2.txt (и я хочу записать свои данные между 789 и 451).

после выполнения скрипта 2.txt выглядит следующим образом:

123
456
789
hello
hello
hello
hello 451
234

Здесь «Hello 451» заставляет мою логику не работать в следующий раз.

Итак, я хочу добиться, как показано ниже:

123
456
789
hello
hello
hello
hello 
451

Пожалуйста, поделитесь решением или помогите мне достичь этой логики. 234


person Venky    schedule 25.07.2017    source источник
comment
Вы удаляете символ новой строки, когда делаете data = f.read().rstrip("\n"). Попробуйте НЕ удалить новую строку и посмотрите, что произойдет: data = f.read().   -  person Abdou    schedule 25.07.2017
comment
Или удалите все новые строки как можно скорее при чтении и добавьте их обратно при повторной записи файла.   -  person Will S    schedule 25.07.2017
comment
Только что я попробовал, как вы предложили, data = f.read(), но поведение все равно такое же...   -  person Venky    schedule 25.07.2017


Ответы (1)


Я сделал одно изменение в коде, и это сработало для меня.

Замените строку: contents.insert(line, data) на: contents.insert(line, data+"\n")

person Tejaswi    schedule 25.07.2017