我知道这听起来像是我可以google的东西,但事实是我找不到或者不理解极少数Python 3来源的解释。
所以这是我的问题:
input()
函数是stdin
吗?这是否意味着当您打开filename.py程序时,stdin
是用户键入的内容?print()
是stdout
函数,还是必须写入文件?stdin
和stdout
?更新: 这是否意味着我可以使用:
import sys
unfmtdDate = str(sys.stdin.read())
......而不是......
unfmtdDate = str(input())
答案 0 :(得分:11)
stdin
和stdout
是操作系统提供的类文件对象。通常,当一个程序在交互式会话中运行时,stdin
是键盘输入而stdout
是用户的tty,但是shell可以用于从普通文件或管道输出和输入重定向它们到其他节目。
input()
用于提示用户输入类型。在类似编程谜题的情况下,通常假设stdin
从数据文件重定向,并且当给出输入格式时,通常最好使用sys.stdin.read()
而不是提示输入{ {1}}。 input()
用于交互式用户输入,它可以显示提示符(在sys.stdout上)并使用GNU readline库(如果存在)来允许行编辑等。
input()
确实是写print()
的最常见方式。没有必要做任何特殊的事情来指定输出流。 stdout
如果没有为print()
参数提供备用文件,则会向sys.stdout
写入。
答案 1 :(得分:1)
输入()是Python 3中的stdin函数吗?这是否意味着当您打开filename.py程序时,stdin是用户键入的内容?
input()
从标准输入读取(在某些情况下简称为stdin
),是的。我所知道的语言在标准库中没有名为stdin
的函数。当您以通常的方式运行程序时,用户输入的内容将提供给标准输入,是的。这就是“标准输入”的含义。有一个单独的程序将用户键入的内容输入标准输入(并执行其他一些方便的操作,例如解释退格键)。您的脚本不是创建窗口的内容,即输入文本。
sys.stdin
(即stdin
模块中定义的值sys
)是对象,表示标准输入。提供此选项是为了您可以在需要指定“文件”的上下文中使用它,以便从用户而不是文件中读取输入。
在Python 3中print()是stdout函数,还是必须写入文件?
print()
写入(默认情况下;您可以提供file
关键字参数来更改)到标准输出(在某些情况下简称为stdout
),是的。以上所有警告都适用:stdout
不是我听过的任何语言的函数,而一个完全独立的程序实际上会导致脚本的输出以漂亮的80x24白色显示在屏幕上 - 文本在黑色背景(或者你已经配置了)框。
sys.stdout
是对象,表示标准输出,与sys.stdin
类似。您可以使用print
函数明确使用它,但没有意义:它是默认值。
对于Spotify拼图,是说“输入是从标准输入读取”。我的文件应该包括stdin和stdout?
问题规范意味着“使用input()
函数接收输入”。
答案 2 :(得分:1)
运行Python程序时,sys.stdin
是连接到标准输入(STDIN)的文件对象,sys.stdout
是标准输出(STDOUT)的文件对象,sys.stderr
是标准错误的文件对象(STDERR)。
在文档中的任何地方,您都会看到对标准输入,标准输出或标准错误的引用,它指的是这些文件句柄。您可以直接访问它们(sys.stdout.write(...)
,sys.stdin.read()
等)或使用使用这些流的便捷功能,例如input()
和print()
。
对于Spotify拼图,阅读输入的最简单方法是:
import sys
data = sys.stdin.read()
在这两行之后,程序的输入现在位于str data
。
答案 3 :(得分:0)
来自the Python documentation for print
:
文件参数必须是具有
write(string)
方法的对象;如果不存在或None
,则会使用sys.stdout
。输出缓冲由文件决定。例如,使用file.flush()
确保在屏幕上立即显示。
答案 4 :(得分:0)
{3}是{3}中的
input()
函数吗?
是
这是否意味着当您打开
stdin
程序时,filename.py
是用户输入的内容?
是
Python 3中
stdin
是print()
函数,还是必须写入文件?
您可以使用其中之一。
对于Spotify拼图,是说“输入是从标准输入读取”。我的文件应该包含
stdout
和stdin
?
只需使用stdout
即可转到import sys
和sys.stdin
个文件。如果您使用sys.stdout
和input
内置函数,则无需导入。