如果我用这段代码在 Python 中创建一个程序“prog.py”:
#!/usr/bin/python3.3
# -*-coding:Utf-8 -*
while True:
number = int(input())
print(number * 2)
我有一个文件“numbers.txt”:
1
2
3
4
5
6
7
8
9
10
然后我这样运行它:
chmod +x prog.py
cat numbers.txt | ./prog.py
我明白了:
2
4
6
8
10
12
14
16
18
20
Traceback (most recent call last):
File "./prog.py", line 5, in <module>
number = int(input())
EOFError: EOF when reading a line
为什么会出现这个错误?
这是预料之中的;您尝试使用 input
从标准输入读取而不检查是否已到达文件末尾。但是,最好直接遍历文件 sys.stdin
,而不是重复调用 input
。
import sys
for line in sys.stdin:
number = int(line)
print(number * 2)
当您到达文件末尾时,迭代将自动停止,因此无需明确检查它。
我是一名优秀的程序员,十分优秀!