我想将输出从一个脚本转发到另一个。
我尝试这样做:
./producer.py > ./consumer.py
哪里有采购员:
#!/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)
我希望生产者将生成:1 2 3 4 5,并且此管道将由另一个脚本保存在文件test.txt中。谢谢您的帮助。
答案 0 :(得分:1)
使用管道|
而非>
将输出(stdout)从一个进程转发到另一个进程(如stdin)。另外,请注意管道上的数据已缓冲,当没有大量数据并且流永远不会关闭时,似乎没有任何反应。
答案 1 :(得分:0)
答案 2 :(得分:0)
尝试使用子流程,然后将数据从输出管道保存到文件中。您无需在外部执行命令。
from subprocess import PIPE,Popen
process = Popen(['python','test.py'],stderr=PIPE,stdout=PIPE)
output = process.stdout.readlines()