继续阅读 sys.stdin
Continue reading on sys.stdin
是否可以继续阅读 sys.stdin
上的输入?我正在尝试根据输入连续执行一个函数。 (我的函数只打印到 sys.stdout
和 sys.stderr
,而不会 return 任何东西。)我的代码:
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
输出时停止。
在将 'Not prime' 打印到 sys.stderr
之后,您会调用 sys.exit
,这会导致您的程序终止。如果你删除它,阅读 sys.stdin
应该继续,直到你发出 EOF 字符(Ctrl+Z on Windows,Ctrl+D on POSIX)。
是否可以继续阅读 sys.stdin
上的输入?我正在尝试根据输入连续执行一个函数。 (我的函数只打印到 sys.stdout
和 sys.stderr
,而不会 return 任何东西。)我的代码:
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
输出时停止。
在将 'Not prime' 打印到 sys.stderr
之后,您会调用 sys.exit
,这会导致您的程序终止。如果你删除它,阅读 sys.stdin
应该继续,直到你发出 EOF 字符(Ctrl+Z on Windows,Ctrl+D on POSIX)。