![](/img/trans.png)
[英]Supporting sys.stdin.readlines() as well as command line arguments in python?
[英]python-sys.stdin.readlines() ,Stop reading lines in command line
我有一個函數sys.stdin.readlines()
的代碼。
上面sys.stdin.buffer.readlines()
和sys.stdin.buffer.readlines()
什么sys.stdin.buffer.readlines()
?。
他們究竟是做什么的?
1) sys.stdin
是一個TextIOWrapper
,它的目的是從 stdin 讀取文本。 結果字符串將是實際的str
s。 sys.stdin.buffer
是一個BufferedReader
。 您從中獲得的行將是字節字符串
2)他們從stdin
讀取所有行,直到達到eof
或者達到你給他們的限制
3)如果你想讀一行,你可以使用.readline()
(注意:沒有s
)。 否則,當在命令行上與程序交互時,你必須給它 EOF 信號(Ctrl+D on *nix)
您這樣做是否有原因而不是僅僅調用input()
從標准輸入一次獲取一個文本行?
從文檔
系統標准輸入
系統標准輸出
系統文件
與解釋器的標准輸入、輸出和錯誤流相對應的文件對象。 stdin 用於除腳本外的所有解釋器輸入,但包括對 input() 的調用。 stdout 用於 print() 和表達式語句的輸出以及 input() 的提示。 解釋器自己的提示和(幾乎所有)它的錯誤消息都轉到 stderr。 stdout 和 stderr 不需要是內置文件對象:任何對象都是可以接受的,只要它有一個帶字符串參數的 write() 方法。 (更改這些對象不會影響由 os.popen()、os.system() 或 os 模塊中的 exec*() 系列函數執行的進程的標准 I/O 流。)
注意:默認情況下,標准流處於文本模式。 要向這些寫入或讀取二進制數據,請使用底層二進制緩沖區。 例如,要將字節寫入標准輸出,請使用
sys.stdout.buffer.write(b'abc')
。
所以, sys.stdin.readlines()
讀取傳遞給所有stdin
和分離,從而形成線的內容(你會看到一個列表的結果)。
sys.stdin.buffer.readlines()
做同樣的sys.stdin.buffer.readlines()
,但對於標准輸入的緩沖區。 我建議使用第一種方法,因為緩沖區可能是空的,而 stdin 可能包含一些數據。
如果您想在某個時刻停止,則使用readline()
一次只讀取一行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.