簡體   English   中英

Python:從stdin讀取大量行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM