![](/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.