Python 3.2-readline () пропускает строки в исходном файле

У меня есть .txt файл, который я создал с несколькими линиями.

когда я запускаю цикл for с аккумулятором count, он пропускает строки.

он пропускает верхнюю строку и начинается со второй, печатает четвертую, шестую и т. д...

чего мне не хватает?

** for your reading pleasure**
def main():
    # Open file line_numbers.txt
    data_file = open('line_numbers.txt', 'r')

    # initialize accumulatior
    count = 1


    # Read all lines in data_file
    for line in data_file:
        # Get the data from the file
        line = data_file.readline()

        # Display data retrieved
        print(count, ": ", line)

        # add to count sequence
        count += 1

3 ответов


Попробуйте удалить " line=data_file.readline () " все вместе? Я подозреваю, что" для строки в data_file: "также является операцией readline.


you for loop выполняет итерацию по файлу data_file, и ваша readline() конкурирует с ним. Стереть line = data_file.readline() строка вашего кода для такой результат:

# Read all lines in data_file
count = 1
for line in data_file:
    # Display data retrieved
    print(count, ": ", line)

    # add to count sequence
    count += 1

for line in data_file уже получает текст каждой строки для вас - последующий вызов readline затем получает после линии. Другими словами, удаление вызова readline сделает то, что вы хотите. В то же время вам не нужно самостоятельно отслеживать переменную аккумулятора - python имеет встроенный способ сделать это с помощью enumerate - другими словами:

data_file = open('line_numbers.txt', 'r')
for count, line in enumerate(data_file):
    ...