Я хотел бы прочитать CSV файл со стандартного ввода и обработать каждую строку по мере ее появления. Мой код вывода CSV записывает строки один за другим, но мой читатель ждет завершения потока перед итерацией строк. Является ли это ограничением модуля csv
? Я что-то делаю неправильно?
Мой код считывателя:
import csv
import sys
import time
reader = csv.reader(sys.stdin)
for row in reader:
print "Read: (%s) %r" % (time.time(), row)
Мой код записи:
import csv
import sys
import time
writer = csv.writer(sys.stdout)
for i in range(8):
writer.writerow(["R%d" % i, "$" * (i+1)])
sys.stdout.flush()
time.sleep(0.5)
Вывод python test_writer.py | python test_reader.py
:
Read: (1309597426.3) ['R0', '$']
Read: (1309597426.3) ['R1', '$$']
Read: (1309597426.3) ['R2', '$$$']
Read: (1309597426.3) ['R3', '$$$$']
Read: (1309597426.3) ['R4', '$$$$$']
Read: (1309597426.3) ['R5', '$$$$$$']
Read: (1309597426.3) ['R6', '$$$$$$$']
Read: (1309597426.3) ['R7', '$$$$$$$$']
Как вы можете видеть, все операторы печати выполняются одновременно, но я ожидаю, что будет разрыв в 500 мс.