如何从流中读取CSV文件并在写入每一行时对其进行处理?

如何从流中读取CSV文件并在写入每一行时对其进行处理?,第1张

如何从流中读取CSV文件并在写入每一行时对其进行处理?

如文档中所述,

为了使

for
循环成为遍历文件行的最有效方法(一种非常常见的 *** 作),该
next()
方法使用了隐藏的预读缓冲区。

您可以查看调用底层迭代器方法(via
)的

csv
模块的实现(784行)。
csv.reader``next()``PyIter_Next

因此,如果您真的想无缓冲地读取CSV文件,则需要将文件对象(此处为

sys.stdin
)转换为
next()
实际调用其方法的迭代器
readline()
。使用
iter
函数的两个参数形式可以轻松完成此 *** 作。因此,将代码更改为
test_reader.py
如下所示:

for row in csv.reader(iter(sys.stdin.readline, '')):    print("Read: ({}) {!r}".format(time.time(), row))

例如,

$ python test_writer.py | python test_reader.pyRead: (1388776652.964925) ['R0', '$']Read: (1388776653.466134) ['R1', '$$']Read: (1388776653.967327) ['R2', '$$$']Read: (1388776654.468532) ['R3', '$$$$'][etc]

您能解释一下为什么需要无缓冲读取CSV文件吗?无论您要做什么,都可能有更好的解决方案。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5630680.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存