Python 3.2 - readline () пропускает строки в исходном файле - PullRequest
8 голосов
/ 08 июля 2011

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

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

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

Что мне не хватает?

** 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 ]

9 голосов
/ 08 июля 2011

Ваш цикл for выполняет итерацию по файлу 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
9 голосов
/ 08 июля 2011

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

4 голосов
/ 08 июля 2011

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

data_file = open('line_numbers.txt', 'r')
for count, line in enumerate(data_file):
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...