如何读取stdin?一些代码高尔夫挑战需要使用stdin进行输入。


当前回答

从Python 3.8开始,您可以使用赋值表达式:

while (line := input()):
    print(line)

其他回答

import sys

for line in sys.stdin:
    print(line)

请注意,这将在末尾包含一个换行符。要删除末尾的换行符,请使用@brittohaloran所说的line.rstrip()。

使用文件输入模块:

import fileinput

for line in fileinput.input():
    pass

fileinput将循环通过输入中指定为命令行参数中给定的文件名的所有行,如果没有提供参数,则循环通过标准输入。

注意:行将包含尾随换行符;要删除它,请使用line.rstrip()。

试试看:

import sys

print sys.stdin.read().upper()

并通过以下方式进行检查:

$ echo "Hello World" | python myFile.py

我非常惊讶,到目前为止没有人提到过这个黑客:

python -c "import sys; set(map(sys.stdout.write,sys.stdin))"

在python2中,您可以放弃set()调用,但这两种方法都可以

这将使标准输入与标准输出相呼应:

import sys
line = sys.stdin.readline()
while line:
    print line,
    line = sys.stdin.readline()