Python子进程–运行shell命令,在特定的命令输出上做一些事情。

我正在编写一个自动化的python脚本。

我需要运行一个linux shell命令(Program: dvbv5-zap)并等待特定的命令输出 (DVR interface '/dev/dvb/adapter0/dvr0' can now be opened). 当命令输出这个字符串时,python应该运行另一个shell程序。

我不知道如何捕获子进程Cli的输出,我试过用 .stdout.readline()我运行了一个命令,其中包括 subprocess.Popen(['dvbv5-zap', 'args'], stdout=subprocess.PIPE)

解决方案:

我在这里找到了答案。https:/fredrikaverpil.github.io20131011catching-string-from-stdout-with-python。

代码片段。

# Imports
import os, sys, subprocess

# Build command
command = [ 'python', os.join.path('/path/to', 'scriptFile.py') ]

# Execute command
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

# Read stdout and print each new line
sys.stdout.flush()
for line in iter(p.stdout.readline, b''):

    # Print line
    sys.stdout.flush()
    print(">>> " + line.rstrip())


    # Look for the string 'Render done' in the stdout output
    if 'Render done' in line.rstrip():

        # Write something to stdout
        sys.stdout.write('Nice job on completing the render, I am executing myFunction()\n' )
        sys.stdout.flush()

        # Execute something
        myFunction()

给TA打赏
共{{data.count}}人
人已打赏
解决方案

长输入的快速解决方案?

2022-5-13 16:00:35

解决方案

使用缓冲区和转换投影,PostGIS

2022-5-13 16:00:37

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索