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

问题描述 投票:0回答:1

我正在编写一个自动化的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)

python subprocess stdout
1个回答
0
投票

我在这里找到了答案。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()
© www.soinside.com 2019 - 2024. All rights reserved.