从shell命令到python脚本的管道无限输出

从shell命令到python脚本的管道无限输出,python,linux,python-3.x,unix,pipe,Python,Linux,Python 3.x,Unix,Pipe,我想将输出从一个脚本转发到另一个脚本 我试着这样做: ./producer.py > ./consumer.py 其中procuder: #!/usr/bin/env python3 import sys import time i=0 while True: print(i) i+=1 time.sleep(1) 和消费者: #!/usr/bin/env python3 import sys f= open("test.txt","w+") whil

我想将输出从一个脚本转发到另一个脚本

我试着这样做:

./producer.py > ./consumer.py
其中procuder:

#!/usr/bin/env python3

import sys
import time

i=0
while True:
    print(i)
    i+=1
    time.sleep(1)
和消费者:

#!/usr/bin/env python3

import sys

f= open("test.txt","w+")

while True:
    line = sys.stdin.read()
    print(line)
    f.write(line)

我希望producer将生成:1 2 3 4 5,这个管道将由另一个脚本保存在test.txt文件中。谢谢您的帮助。

使用管道
|
而不是
将输出(stdout)从一个进程转发到另一个进程(如stdin)。此外,请注意,管道上的数据是缓冲的,当数据量不多且流从未关闭时,这可能看起来好像什么都没有发生。

请考虑使用具有两个线程的队列。是一个很好的基本指南。是另一个指南。

尝试使用子流程,然后将数据从输出管道保存到文件。您不需要在外部执行该命令

from subprocess import PIPE,Popen

process = Popen(['python','test.py'],stderr=PIPE,stdout=PIPE)

output = process.stdout.readlines()