[英]Python: Read huge number of lines from stdin
我正在嘗試用python從標准輸入中讀取大量的行。
more hugefile.txt | python readstdin.py
問題是,只要我讀了一行,程序就會凍結。
print sys.stdin.read(8)
exit(1)
這打印前8個字節,但我希望它終止,但它永遠不會。 我認為這不僅僅是讀取第一個字節,而是嘗試將整個文件讀入內存。
與sys.stdin.readline()相同的問題
我真正想做的當然是閱讀所有的行,但有一個緩沖區,所以我不會耗盡內存。
我正在使用python 2.6
這應該在現代Python中有效地工作:
import sys
for line in sys.stdin:
# do something...
print line,
然后,您可以像這樣運行腳本:
python readstdin.py < hugefile.txt
回到當天,您必須使用xreadlines
來獲得高效的一次性IO - 而且文檔現在要求您使用for line in file
。
當然,只有當你實際上一次在線上工作時,這才有幫助。 如果您只是閱讀大二進制blob以傳遞給其他內容,那么您的其他機制可能同樣有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.