【发布时间】:2011-09-27 05:13:26
【问题描述】:
我想从标准输入中读取一个 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 毫秒的间隔。
【问题讨论】:
-
如果你只运行
python test_writer.py会发生什么?
标签: python csv stream line-by-line