如果我制作节目" prog.py"在Python中使用此代码:
#!/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
为什么会出现此错误?
答案 0 :(得分:1)
这是因为你正在使用
while True:
将其替换为
import sys
for line in sys.stdin:
number = int(line.strip())
答案 1 :(得分:1)
这是预期的;您尝试使用input
读取标准输入,而不检查是否已到达文件末尾。但是,最好直接在文件sys.stdin
上进行迭代,而不是重复调用input
。
import sys
for line in sys.stdin:
number = int(line)
print(number * 2)
当您到达文件末尾时,迭代将自动停止,因此无需明确检查它。