如何在python中通过管道访问程序的输出

时间:2019-06-10 07:13:39

标签: python python-3.6

我正在尝试使用os.popen()传递python脚本的输出。这是我的python脚本:

sample.py

while(True):
   print("hello")

python版本:3.6.7 操作系统:Ubuntu 18.04

我的脚本执行该过程:

import os
import types
def sample_function():
    pipe = os.popen('python3 /home/gomathi/sample.py')
    while(True):
        a = pipe.readline()
        yield a
s=sample_function()
for i in s:
    print(i)

它对于上面的代码很好用。现在的问题是,我将 sample.py 更改如下:

sample.py

print("hello")

它只是在整个屏幕上打印空白,然后继续打印空白字符。我的代码出了什么问题?我的代码需要进行哪些更改才能适用于上述sample.py?

2 个答案:

答案 0 :(得分:2)

您的新sample.py结束了,但是您继续从管道中读取内容。所以你得到的是空字符串。

答案 1 :(得分:0)

使用具有相同功能subprocess的{​​{1}}模块,并将输出和错误重定向到主.py文件的Popen函数。

print