繁体   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