我陷入了将一个脚本的输出传递到另一个脚本(两个都是python)的问题.
这个问题非常相似,但(1)它没有提供答案(2)我的情况略有不同.所以,我认为开一个新问题会更好.
这是问题所在.
两个脚本几乎完全相同:
receiver.py
import sys
import time
for line in sys.stdin:
sys.stdout.write(line)
sys.stdout.flush()
time.sleep(3)
Run Code Online (Sandbox Code Playgroud)
replicator.py
import sys
import time
for line in sys.stdin:
sys.stderr.write(line)
sys.stderr.flush()
time.sleep(3)
Run Code Online (Sandbox Code Playgroud)
当我一个接一个地在bash或cmd中执行这些脚本时,一切都很好.以下两个示例都正常工作,我在输出中看到输入文本:
作品:(每3秒输出一行输出)
cat data.txt | python receiver.py
cat data.txt | python replicator.py
Run Code Online (Sandbox Code Playgroud)
但是一旦我从一个脚本管道到另一个脚本,它们就会停止工作:
不起作用:(在到达文件末尾之前没有任何内容出现)
cat data.txt | python receiver.py | python replicator.py
Run Code Online (Sandbox Code Playgroud)
然后,当我将第一个脚本传递给另一个工具时,它再次工作!
作品:
cat data.txt | python receiver.py | cat -n
cat data.txt | python replicator.py | cat -n
Run Code Online (Sandbox Code Playgroud)
最后,当我删除阻塞sleep()函数时,它再次开始工作:
删除计时器:
time.sleep(0)
Run Code Online (Sandbox Code Playgroud)
它现在有效: …
python ×1