Я изучаю Python, и сейчас я хочу напечатать определенные строки в файле, в данном случае все четные строки (при условии базы 1).
В бесчисленном количестве мест в Интернете я вижутот же простой цикл, который якобы работает.Например, этот SO поток , или эта статья .
Все они используют метод ниже
f = open('output.txt', 'r')
for line in f:
print(line)
Для меня это вообще ничего не возвращает, за исключением "Процесс завершен с кодом завершения 0"
Использование f.seek(0)
до for line...
подтвердило мое подозрение, что указатель был в нижней части файла.
Имея эту информацию, я построил следующее
f = open('Output.txt', 'r')
startline = 1
s = (startline-1 | 1) + 1 #determine first even line nr. from specified starting line
count = 0
for a in f: count += 1
for line in range(s-1, count, 2):
f.seek(0)
print(f.readlines()[line])
Это работает, но не объясняет, почему людям , а не так часто приходится сбрасывать указатель на вершину.
Рядом с этим выводятся все необходимые строки, но с пустой строкой между ними.Если я использую print(f.readlines()[line] + 'END')
вместо этого, результаты будут следующими: казалось бы, пустая строка теперь обязательно является новой строкой?
Да, смелый сэр Робин обернулся на
END
И галантно* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *} * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *.1042 * РЕДАКТИРОВАТЬ: мой текущий весь код
f = open('Output.txt')
startline = 1
s = (startline-1 | 1) + 1
count = 0
for a in f: count += 1
f.seek(0)
for line in range(s-1, count, 2):
f.seek(0)
print(f.readlines()[line], end = '')
for line in f:
print(line)
с выводом
Да, храбрый сэр Робин обернулся около
И галантно он выбил
Храброразговаривает с ногами
Он сделал очень смелое отступление
Процесс завершен с кодом выхода 0