如何使用管道运算符和多个参数调用 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')
我正在使用 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')