簡體   English   中英

python-sys.stdin.readlines() ,停止在命令行中讀取行

[英]python-sys.stdin.readlines() ,Stop reading lines in command line

我有一個函數sys.stdin.readlines()的代碼。

  1. 上面sys.stdin.buffer.readlines()sys.stdin.buffer.readlines()什么sys.stdin.buffer.readlines() ?。

  2. 他們究竟是做什么的?

  3. 如果他們從命令行讀取行,如何在某個時刻停止讀取行並繼續流經程序?

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.

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