是否可以继续读取输入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)
Run Code Online (Sandbox Code Playgroud)
这是输出:
>>> 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.
>>>
Run Code Online (Sandbox Code Playgroud)
我已经对其进行了测试,并确定当我的函数的输出打开时它会继续读取sys.stdout,并在输出打开时停止sys.stderr。
在您打印“Not prime”之后,sys.stderr您将进行调用,sys.exit这会导致您的程序终止。如果删除它,sys.stdin则应继续阅读,直到发出 EOF 字符(Windows 上为 Ctrl+Z,POSIX 上为 Ctrl+D)。