是否可以继续阅读sys.stdin
上的输入?我试图根据输入继续执行一个功能。 (我的功能仅打印到sys.stdout
和sys.stderr
,并且不会返回任何内容。)我的代码:
def prime(number):
number = abs(int(number))
for i in range(3, number):
if number % i == 0:
print("Not Prime!", file = sys.stderr, flush = True)
sys.exit(0)
print("Prime!", file = sys.stdout, flush = True)
for i in sys.stdin:
prime(i)
这是输出:
>>> for i in sys.stdin:
prime(i)
43 # Input
Prime! # In sys.stdout and it continues reading from sys.stdin
55 # Input
Not Prime! # In sys.stderr and stops.
>>>
我已经对其进行了测试,并确定当我的功能输出在sys.stdout
时它会继续读取,并在sys.stderr
上输出时停止读取。
答案 0 :(得分:4)
在您向sys.stderr
打印'Not prime'之后,您打电话给sys.exit
会导致您的程序终止。如果删除此项,则应继续阅读sys.stdin
,直到您发出EOF字符(Windows上为Ctrl + Z,POSIX上为Ctrl + D)。