我想從標準輸入中讀取一個CSV文件,並處理每一行。我的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)
我寫代碼:
輸出python test_writer.py | python test_reader.py
的
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)
:
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毫秒的差距。
如果你只運行'python test_writer.py',會發生什麼? –