如何使用管道运算符和多个参数调用 python 'subprocess'

How to call python 'subprocess' with pipe operator and with multiple parameters

我正在使用 Python 并且想要 运行 "editUtility",如下所示。

echo "Some data" | /opt/editUtility --append="configuration" --user=userid 1483485

其中 1483485 是一些随机数,也作为参数传递。

我正在做的是通过 Python "subprocess" 调用 "editUtility" 并传递参数,如下所示。

proc = subprocess.Popen(['/opt/editUtility', '--append=configuration'],stdout=subprocess.PIPE)
            lsOutput=""
            while True:
              line = proc.stdout.readline()
              lsOutput += line.decode()
              if not line:
                break
            print(lsOutput)

我的问题是:如何传递上面提到的所有参数以及如何在子进程调用中使用 'echo "some data"' 和管道符号?

所以如果你只是想输入一个字符串然后读取过程的输出直到结束Popen.communicate可以使用:

cmd = [
    '/opt/editUtility',
    '--append=configuration',
    '--user=userid',
    '1483485'
]

proc = subprocess.Popen(
    cmd,
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE
)

(stdoutData, stderrData) = proc.communicate('Some data')