Как получить вывод второго последовательного цикла for в блоке with, внутри которого читается файл .csv? - PullRequest
0 голосов
/ 27 августа 2018
from csv import reader    
with open('tsble.csv', 'r') as r:
            rows = reader(r)
            for row in rows:
                print(row)
            print("Second print\n")
            for r in rows:
                print(r)

Выход второго цикла for в вышеприведенном python-with-block не поступает. Как получить выходные данные из двух или более последовательных циклов for в блоке.

Ответы [ 2 ]

0 голосов
/ 27 августа 2018

Вы достигли конца файла, поэтому вы можете просто seek вернуться:

with open('tsble.csv', 'r') as r:
    rows = csv.reader(r)
    for row in rows:
        print(row)
    r.seek(0)
    print("Second print\n")
    for r in rows:
        print(r)
0 голосов
/ 27 августа 2018

rows - генератор. Таким образом, первый цикл for потребляет его, а второй цикл for никогда не выполняется. Возможное решение было бы заставить rows в списке:

 rows = list(csv.reader(r))

Имейте в виду, что это заставит код потреблять больше памяти. Это может иметь значение, если файл имеет больший размер. В этом случае используйте решение @ zipa.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...