Печать без вывода в текстовый файл в Python при чтении определенных строк - PullRequest
0 голосов
/ 09 октября 2018

Я хочу напечатать каждую третью строку (начиная со строки 2) из ​​файла в новый файл.Пример файла (line.txt):

line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11

Вывод будет

line2
line5
line8
line11

Сценарий, который я написал, является

with open ('line.txt') as file:
    for line in file.read().split("\n")[1::3]:
        print (line)
        f = open('output.txt','w')
        f.write(line)
        f.close()

Нов output.txt file ничего не копируется.output.txt остается пустым.Даже если я print line после запуска скрипта в Python IDLE, line возвращает пустое значение ''.Но во время выполнения скрипта вывод будет желаемым, то есть

line2
line5
line8
line11

Любая помощь или советы будут с благодарностью!

Ответы [ 3 ]

0 голосов
/ 09 октября 2018
with open ('line.txt') as file:
        f = open('output.txt','w')
        for line in file.read().split("\n")[1::3]:
            outputline=line
            f.write(outputline)
        f.close()
0 голосов
/ 09 октября 2018

следующий скрипт записать в файл output.txt в соответствии с вашим описанием Я хочу напечатать каждую третью строку (начиная со строки 2) из ​​файла в новый файл

output_file = open("output.txt", "a")
with open ('line.txt') as file:
    for line in file.readlines()[1::3]:
        output_file.write(line)
output_file.close()

Я использую readlines() вместо read(), потому что он читает целую строку вместо чтения одной строки.Также я использую открытый файл с "a" вместо "w", потому что режим добавления позволяет вам добавлять содержимое в файл.С "w" вы перезаписывали каждую итерацию цикла.Надеюсь, это поможет.

0 голосов
/ 09 октября 2018

Вы закрываете файл output.txt и открываете его снова каждый раз в цикле.Я бы предложил исключить их из цикла:

with open('output.txt', 'w') as f:
    with open ('line.txt', 'r') as file:
        for line in file.readlines()[1::3]:
            print(line)
            f.write(line)

примечание: я также добавил +'\n в оператор записи, чтобы включить окончания строк в ваш файл output.txt

Редактировать: как@DeepSpace справедливо заметил, что вы могли бы лучше использовать with open() для обоих файлов и readlines() вместо read().split('\n').Используя with open(), вам не нужно помнить, чтобы закрыть его.

...