Python 3.x 使用sys.stdin获取用户输入数据
我没有使用Python 3.x 使用sys.stdin获取用户输入数据,python-3.x,stdin,Python 3.x,Stdin,我没有使用.read()或.readline() 但是这段代码可以读取数据。它逐行读取数据。输入数据由'\n'分隔。数据由用户键入。比如“input()” 我的问题: .read()或.readline()不是必需的吗 我想知道为什么for循环在sys.stdin上工作,以及它是如何逐行读取数据的 如果查看,您将看到sys.stdin(和sys.stdout/sys.stderr)只是文件对象 这些流是常规文本文件,类似于open()函数返回的文本文件 说: open()函数返回的文件对象类型取
.read()
或.readline()
但是这段代码可以读取数据。它逐行读取数据。输入数据由'\n'
分隔。数据由用户键入。比如“input()”
我的问题:
.read()
或.readline()
不是必需的吗for
循环在sys.stdin
上工作,以及它是如何逐行读取数据的sys.stdin
(和sys.stdout
/sys.stderr
)只是文件对象
这些流是常规文本文件,类似于open()
函数返回的文本文件
说:
open()
函数返回的文件对象类型取决于模式。当使用open()
以文本模式(“w”、“r”、“wt”、“rt”等)打开文件时,它返回io.TextIOBase
(特别是io.TextIOWrapper
)的子类
TextIOWrapper
继承自IOBase
,它有一个\uuuu iter\uuuu
方法。此\uuu iter\uu
方法允许在文件中的行上循环。我在Python文档中找不到这一点,但已经给出了
IOBase(及其子类)支持迭代器协议,这意味着可以对IOBase对象进行迭代,从而生成流中的行
import sys
data = []
for line in sys.stdin:
data.append(line)