Python 3 текстовых файла - я хочу добавить добавление пользовательского ввода в конец каждой строки текста в файле 1, а затем скопировать новые строки в файл 2 - PullRequest
0 голосов
/ 02 марта 2020

Файл1 содержит 5 строк с текстом Файл2 пуст. В. Когда я запускаю приведенный ниже код, я получаю только первые 4 строки, добавленные в Файл2? Есть предложения?

        File1 = open("MyFile.txt", "r")

        for Line in File1:
            Line = Line.strip()
            AddData = input( "extra text")
            NewLine = Line + ":" + AddData  # : as field seperator
            File2 = open("MyFile2.txt", "a")
            File2.write(NewLine+"\n")
            print(NewLine) #remove

        File2.close

Ответы [ 2 ]

0 голосов
/ 02 марта 2020

Вы не закрываете запись в файл. Вам нужно использовать:

 File2.close() 

, а не

File2.close

Без скобок вы только называете функцию без ее фактического вызова, а затем он не выполняется

И метод write (newline) только передает вашу строку в буфер, он записывает в файл только тогда, когда буфер заполнен или когда вы вызываете open () или close () ваши первые 4 строки были написаны потому, что вы вызвали метод open () после них

0 голосов
/ 02 марта 2020

Вы не пишете код на языке pythoni c, вы должны были использовать составной оператор with при открытии файлов, и нет необходимости открывать File2 каждый раз, когда вы выполняете итерацию по l oop. Что касается количества строк, проверьте, содержит ли File1 пять строк.

Посмотрите на приведенный ниже код,

with open("MyFile.txt", "r") as file1, open("MyFile2.txt", "a") as file2:
    for line in file1:
        line = line.strip()
        adddata = input("extra text:")
        newline = line + ":" + adddata  # : as field seperator
        file2.write(newline + "\n")
...