如何在Python中读取和检查stdin/stdout?

2 投票
2 回答
2297 浏览
提问于 2025-04-17 13:11

我们有一个很好的答案,讲的是如何从标准输入(stdin)读取数据。

  1. 但是我不明白怎么运行Python代码,让它从一个文件里读取数据,就像从标准输入那样?
  2. 那这个 print 是不是就像标准输出(stdout)一样?

我问这个是因为我在Facebook的一个演示谜题中看到过这样的说明:

注意:你需要写完整的代码,所有输入都来自标准输入,输出到标准输出。如果你使用的是“Java”,类名是“Solution”。

2 个回答

2

如果你想运行代码,让它从标准输入(stdin)读取一个文件,而不是从交互式终端输入,那么你需要使用重定向。

python program.py <input_file.txt

这里的<符号表示在运行脚本时,指定的文件会被连接到标准输入。这种写法在Windows、MacOS和类Unix系统上都是一样的。

6

当你从 stdin 读取数据时,有三种基本的方法:

  • 手动输入内容:

    $ python hello.py
    asfasfasf
    asfasfasfasfasf
    <TYPE CONTROL-D TO END STREAM>
    
  • 使用 < 符号:

    $ python hello.py < inputfile.txt
    
  • 使用之前命令的输出:

    $ cat inputfile.txt | grep oranges | python hello.py
    

这三种方法都可以通过 stdin 获取输入。


在你修改问题后,你问的就不再是原来的问题了。以下是对你新问题的回答:

  1. 你可以用 sys.stdin = open('inputfile.txt') 让输入文件看起来像是从 stdin 读取的。确保这是你想要的。从你的作业提示来看,似乎我上面的解决方案正是你需要的。
  2. print 是用来输出到 stdout 的。

撰写回答