任何人都可以在Python 3中给我一个stdin和stdout的快速教程吗?

时间:2012-01-24 00:21:36

标签: python python-3.x stdout stdin

我知道这听起来像是我可以google的东西,但事实是我找不到或者不理解极少数Python 3来源的解释。

所以这是我的问题:

  • Python 3中的input()函数是stdin吗?这是否意味着当您打开filename.py程序时,stdin是用户键入的内容?
  • 在Python 3中print()stdout函数,还是必须写入文件?
  • 对于 Spotify puzzle ,表示“输入是从标准输入读取的”。我的文件应该包含stdinstdout

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

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

......而不是......

unfmtdDate = str(input())

5 个答案:

答案 0 :(得分:11)

stdinstdout是操作系统提供的类文件对象。通常,当一个程序在交互式会话中运行时,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中stdinprint()函数,还是必须写入文件?

您可以使用其中之一。

  

对于Spotify拼图,是说“输入是从标准输入读取”。我的文件应该包含stdoutstdin

只需使用stdout即可转到import syssys.stdin个文件。如果您使用sys.stdoutinput内置函数,则无需导入。