继续阅读 sys.stdin

Continue reading on sys.stdin

是否可以继续阅读 sys.stdin 上的输入?我正在尝试根据输入连续执行一个函数。 (我的函数只打印到 sys.stdoutsys.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)。