有人能给我一个关于Python 3中标准输入输出的快速教程吗?
我知道这听起来像是我可以在网上查到的东西,但实际上我找不到或者不理解那些很少的关于Python 3的资料所解释的内容。
所以我有几个问题:
input()
是Python 3中的stdin
函数吗?这是否意味着当你打开你的filename.py程序时,stdin
就是用户输入的内容?print()
是Python 3中的stdout
函数吗?还是说你必须写入一个文件?- 关于Spotify的谜题,上面说“输入是从stdin读取的”。那么我的文件应该包含什么内容来处理
stdin
和stdout
呢?
更新:这是否意味着我可以使用:
import sys
unfmtdDate = str(sys.stdin.read())
...而不是...
unfmtdDate = str(input())
?
5 个回答
input()
是 Python 3 中的stdin
函数吗?
是的。
那是不是说,当你打开你的
filename.py
程序时,stdin
就是用户输入的内容?
没错。
print()
是 Python 3 中的stdout
函数吗,还是说你必须写入一个文件?
你可以两者都用。
关于 Spotify 的题目,上面说“输入是从 stdin 读取的”。那我的文件里应该包含
stdin
和stdout
的什么内容呢?
只需使用 import sys
来访问 sys.stdin
和 sys.stdout
文件。如果你使用内置的 input
和 print
函数,就不需要这个导入了。
当你运行你的Python程序时,sys.stdin
是连接到标准输入(也就是你输入的地方)的文件对象,sys.stdout
是标准输出(也就是程序输出结果的地方)的文件对象,而 sys.stderr
是标准错误(用来显示错误信息的地方)的文件对象。
在文档中提到的标准输入、标准输出或标准错误,都是指这些文件对象。你可以直接使用它们(比如 sys.stdout.write(...)
、sys.stdin.read()
等等),或者使用一些方便的函数,比如 input()
和 print()
,这些函数会自动使用这些输入输出流。
对于Spotify的题目,读取输入的最简单方法可以是这样的:
import sys
data = sys.stdin.read()
在这两行代码之后,你的程序的输入现在已经存储在字符串 data
里了。
stdin
和 stdout
是操作系统提供的像文件一样的对象。一般来说,当你在交互式会话中运行一个程序时,stdin
就是你从键盘输入的内容,而 stdout
则是显示在你屏幕上的内容。不过,你也可以通过命令行把它们重定向到普通文件,或者从其他程序的输出和输入中获取数据。
input()
是用来提示用户输入内容的。在一些编程题目中,通常会假设 stdin
是从一个数据文件中重定向过来的,这时候如果给出了输入格式,最好用 sys.stdin.read()
来读取数据,而不是用 input()
来逐行输入。input()
主要是为了让用户进行交互式输入,它可以显示提示信息(在 sys.stdout
上),并且如果有的话,可以使用 GNU readline 库来支持行编辑等功能。
print()
确实是写入 stdout
的最常用方法。你不需要做什么特别的事情来指定输出流。如果没有给 print()
提供其他文件作为 file=
参数,它就会默认写入 sys.stdout
。