我试图在Linux上学习简单的管道工具:
sender.py:
# sender.py
import random
import sys
import time
while True:
r = random.randrange(5)
print(r)
sys.stdout.flush()
time.sleep(1)
receiver.py:
# receiver.py
import sys
while True:
line = sys.stdin.readline()
print("hello " + line.strip() + " hello")
sys.stdout.flush()
当我这样做时:
$ python sender.py | python receiver.py
我按预期输出以下内容:
hello 3 hello
hello 2 hello
hello 2 hello
hello 0 hello
...
^C
到现在为止,一切都按照我的预期运作。问题部分如下。当我尝试做的时候:
$ echo "50" | python receiver.py
我期望得到的输出是:
hello 50 hello
然而,相反,我有以下几行无限次出现:
hello hello
我的问题:
hello 50 hello
一次?答案 0 :(得分:1)
当只提供一个输入时,您正无限期地读取输入。当没有收到任何内容时,你需要制作你的脚本2^2^3 == (1^1^1)(0^0^1) == 11 == 3
i.e. 10 (2)
10 (2)
11 (3)
--------
11 (3)
========
5^7^5 == (1^1^1)(0^1^0)(1^1^1) == 111
101 (5)
111 (7)
101 (5)
---------
111 (7)
=========
:
break
答案 1 :(得分:1)
...如果f.readline()返回一个空字符串,则已到达文件末尾...
将您的代码更改为:
import sys
while True:
line = sys.stdin.readline()
if not len(line):
break
print("hello " + line.strip() + " hello")
sys.stdout.flush()