python3(lynux)中run()on/into函数的绑定/管道输出

2024-04-25 23:59:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用run函数使用外部程序run的输出。 这个程序定期抛出一行我需要在脚本中使用的数据 我找到了一个子进程库并使用了它的run()/check_output()

示例:
def usual_process(): # some code here for i in subprocess.check_output(['foo','$$']): some_function(i)

现在假设foo已经在路径变量中,并且它以半随机周期输出字符串。
我想让程序做自己的事情,每次foo向其输出发送新行时都运行some_function(i)。你知道吗

这归结为两个问题。将输出管道化到for循环中,并将其作为后台子进程运行 谢谢


更新:我已经使用This成功地将foo输出放到某个函数上

with os.popen('foo') as foos_output:
    for line in foos_output:
        some_function(line)

根据this欧斯波本将被弃用,但我还没有弄清楚如何在python中对内部进程进行管道化 现在只需要弄清楚如何在后台运行这个函数


Tags: 数据函数runin程序脚本foroutput
1条回答
网友
1楼 · 发布于 2024-04-25 23:59:35

所以,我已经解决了。 第一步是启动外部脚本:
proc=Popen('./cisla.sh', stdout=PIPE, bufsize=1)

接下来,我启动了一个函数来读取它并向它传递一个管道

def foo(proc, **args):
       for i in proc.stdout:
         '''Do all I want to do with each'''

foo(proc).start()`

限制包括: 如果你不想捕捉脚本错误,你就必须把它输入。
第二,如果你杀死帕伦特,它会留下一个僵尸,所以别忘了在信号处理中杀死孩子

相关问题 更多 >