继续阅读sys.stdin

时间:2015-03-10 15:15:59

标签: python stdin sys

是否可以继续阅读sys.stdin上的输入?我试图根据输入继续执行一个功能。 (我的功能仅打印到sys.stdoutsys.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上输出时停止读取。

1 个答案:

答案 0 :(得分:4)

在您向sys.stderr打印'Not prime'之后,您打电话给sys.exit会导致您的程序终止。如果删除此项,则应继续阅读sys.stdin,直到您发出EOF字符(Windows上为Ctrl + Z,POSIX上为Ctrl + D)。