【问题标题】:Can anyone give me a quick tutorial in stdin and stdout in Python 3? [closed]谁能给我一个 Python 3 中标准输入和标准输出的快速教程? [关闭]
【发布时间】:2012-02-17 07:51:00
【问题描述】:

我知道这听起来像是我可以用谷歌搜索的东西,但事实是我没有找到或不理解极少数 Python 3 资源解释的内容。

所以这是我的问题:

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

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

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

...而不是...

unfmtdDate = str(input())

?

【问题讨论】:

  • “stdin 函数”和“stout 函数”是什么意思? Stdin 和 stout 是文件。不是函数。这些文件具有读取或写入的方法。你能澄清一下你的意思吗?
  • 我的意思是您如何写入文件,是否可以查看这些文件?
  • 答案是:1.“是的,是的”。 2.“是”。 3. “嗯?这个问题没有意义。”更新:“是的,也不是。”
  • "这是否意味着我可以使用...?"当你尝试它时,你观察到了什么?
  • 它说我不能使用 read() 函数,尽管这里有几个人告诉我可以。也无法测试我的程序,因为它不会提示

标签: python python-3.x stdout stdin


【解决方案1】:

stdinstdout 是操作系统提供的类文件对象。通常,当程序在交互式会话中运行时,stdin 是键盘输入,stdout 是用户的 tty,但 shell 可用于将它们从普通文件重定向或管道输出和输入到其他程序。

input() 用于提示用户输入。在类似编程难题的情况下,通常假定stdin 是从数据文件重定向的,并且在给出输入格式时,通常最好使用sys.stdin.read(),而不是使用input() 提示输入。 input() 用于交互式用户输入,它可以显示提示(在 sys.stdout 上)并使用 GNU readline 库(如果存在)来允许行编辑等。

print() 确实是写信给stdout 的最常见方式。不需要做任何特别的事情来指定输出流。如果没有将备用文件作为file= 参数提供给print(),则print() 将写入sys.stdout

【讨论】:

    【解决方案2】:

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

    是的。

    这是否意味着当您打开filename.py 程序时,stdin 是用户键入的内容?

    是的。

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

    你可以使用任何一个。

    对于 Spotify 谜题,是“从标准输入读取输入”。我的文件应该包含stdinstdout 的哪些内容?

    只需使用import sys 即可访问sys.stdinsys.stdout 文件。如果使用 inputprint 内置函数,则不需要导入。

    【讨论】:

    • stout? stein?再来一杯啤酒!
    • @Greg Hewgill:我的浏览器似乎已经成长为一个自动更正的未来。这很烦人。
    【解决方案3】:

    运行 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 中。

    【讨论】:

      【解决方案4】:

      input() 是 Python 3 中的标准输入函数吗?这是否意味着当您打开 filename.py 程序时,stdin 就是用户键入的内容?

      input() 从标准输入读取(在某些情况下简称为stdin),是的。在我所知道的语言中,标准库中没有一个名为stdin函数。当您以通常的方式运行程序时,用户键入的内容将提供给标准输入,是的。这就是“标准输入”的意思。有一个单独的程序将用户键入的内容提供给标准输入(并做一些其他方便的事情,比如解释退格键)。您的脚本不是创建输入文本的窗口

      sys.stdin(即sys 模块中定义的值stdin)是一个对象,它表示标准输入。这是为了让您可以在需要指定“文件”的上下文中使用它,从而导致从用户而不是文件读取输入。

      print() 是 Python 3 中的标准输出函数,还是必须写入文件?

      print() 写入(默认情况下;您可以提供 file 关键字参数来更改它)到标准输出(在某些情况下简称为 stdout),是的。以上所有注意事项都适用:stdout 不是我听说过的任何语言的函数,并且一个完全独立的程序实际上导致脚本的输出以漂亮的 80x24 白色文本显示在屏幕上- on-black-background(或者你已经配置好了)框。

      sys.stdout 是一个对象,它表示标准输出,用法与sys.stdin 类似。您可以通过 print 函数显式使用它,但没有意义:这是默认设置。

      对于 Spotify 谜题,是“从标准输入读取输入”。我的文件应该包括什么标准输入和标准输出?

      问题说明的意思是“使用input()函数接收输入”。

      【讨论】:

      • 请注意,input() 不能从指定文件中读取(有一些方法可以使标准输入成为文件,但同样,这通常在您的程序外部) .它并不意味着与 print() 函数完全对称。毕竟,它会显示一个提示...在读取文件时显示提示是没有意义的,明白吗?
      【解决方案5】:

      来自the Python documentation for print

      file 参数必须是具有write(string) 方法的对象;如果它不存在或None,将使用sys.stdout。输出缓冲由文件决定。例如,使用file.flush() 确保立即出现在屏幕上。

      【讨论】:

        猜你喜欢
        • 2011-12-20
        • 2018-08-29
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 2014-07-31
        • 1970-01-01
        相关资源
        最近更新 更多