有人能给我一个关于Python 3中标准输入输出的快速教程吗?

22 投票
5 回答
77621 浏览
提问于 2025-04-17 10:56

我知道这听起来像是我可以在网上查到的东西,但实际上我找不到或者不理解那些很少的关于Python 3的资料所解释的内容。

所以我有几个问题:

  • input()是Python 3中的stdin函数吗?这是否意味着当你打开你的filename.py程序时,stdin就是用户输入的内容?
  • print()是Python 3中的stdout函数吗?还是说你必须写入一个文件?
  • 关于Spotify的谜题,上面说“输入是从stdin读取的”。那么我的文件应该包含什么内容来处理stdinstdout呢?

更新:这是否意味着我可以使用:

import sys
unfmtdDate = str(sys.stdin.read())

...而不是...

unfmtdDate = str(input())

?

5 个回答

2

input() 是 Python 3 中的 stdin 函数吗?

是的。

那是不是说,当你打开你的 filename.py 程序时,stdin 就是用户输入的内容?

没错。

print() 是 Python 3 中的 stdout 函数吗,还是说你必须写入一个文件?

你可以两者都用。

关于 Spotify 的题目,上面说“输入是从 stdin 读取的”。那我的文件里应该包含 stdinstdout 的什么内容呢?

只需使用 import sys 来访问 sys.stdinsys.stdout 文件。如果你使用内置的 inputprint 函数,就不需要这个导入了。

5

当你运行你的Python程序时,sys.stdin 是连接到标准输入(也就是你输入的地方)的文件对象,sys.stdout 是标准输出(也就是程序输出结果的地方)的文件对象,而 sys.stderr 是标准错误(用来显示错误信息的地方)的文件对象。

在文档中提到的标准输入、标准输出或标准错误,都是指这些文件对象。你可以直接使用它们(比如 sys.stdout.write(...)sys.stdin.read() 等等),或者使用一些方便的函数,比如 input()print(),这些函数会自动使用这些输入输出流。

对于Spotify的题目,读取输入的最简单方法可以是这样的:

import sys
data = sys.stdin.read()

在这两行代码之后,你的程序的输入现在已经存储在字符串 data 里了。

19

stdinstdout 是操作系统提供的像文件一样的对象。一般来说,当你在交互式会话中运行一个程序时,stdin 就是你从键盘输入的内容,而 stdout 则是显示在你屏幕上的内容。不过,你也可以通过命令行把它们重定向到普通文件,或者从其他程序的输出和输入中获取数据。

input() 是用来提示用户输入内容的。在一些编程题目中,通常会假设 stdin 是从一个数据文件中重定向过来的,这时候如果给出了输入格式,最好用 sys.stdin.read() 来读取数据,而不是用 input() 来逐行输入。input() 主要是为了让用户进行交互式输入,它可以显示提示信息(在 sys.stdout 上),并且如果有的话,可以使用 GNU readline 库来支持行编辑等功能。

print() 确实是写入 stdout 的最常用方法。你不需要做什么特别的事情来指定输出流。如果没有给 print() 提供其他文件作为 file= 参数,它就会默认写入 sys.stdout

撰写回答