【发布时间】:2011-12-16 22:45:23
【问题描述】:
我正在尝试使用 python 从标准输入中读取大量行。
more hugefile.txt | python readstdin.py
问题是程序在我只读了一行后就冻结了。
print sys.stdin.read(8)
exit(1)
这会打印前 8 个字节,但我希望它会终止,但它永远不会终止。我认为这不仅仅是读取第一个字节,而是尝试将整个文件读入内存。
sys.stdin.readline() 也有同样的问题
我真正想要做的当然是读取所有行,但要使用缓冲区,这样我就不会耗尽内存。
我正在使用 python 2.6
【问题讨论】:
-
为什么你使用 more 而不是 cat 甚至只是一个简单的 stdin 重定向?
-
我看不出您的程序会“冻结”的任何原因。你是如何检测到它冻结的?
-
啊,我是从 Windows 命令行运行它的。窗户上没有猫。
-
我和 Mark 有同样的想法,但后来发现
more在重定向 stdout 时表现得就像cat。尽管如此,cat绝对是一个更好的选择。 (我相信它是 Windows 上的type或类似的东西)