Errod:在子流程中转义AWK命令

时间:2019-04-29 19:05:57

标签: python subprocess

我需要知道我在这里必须执行的所有操作才能成功获得子流程命令。

我已经尝试了堆栈溢出时提供的其他解决方案。

>>> stdin,stdout,stderr = sp.Popen(["ps -ef |grep -i user1 |awk '{print $NF}'"],shell=True,stdout=sp.PIPE).communicate()[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: too many values to unpack

1 个答案:

答案 0 :(得分:1)

Popen返回两个数据流( val= 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 )的元组,而不是3。将要发送的任何内容作为参数val = (1:N+step).' <= index传递给stdout, stderr

  

communicate返回一个元组(inputcommunicate())。如果以文本模式打开流,则数据将为字符串;否则,数据为字符串。否则为字节。

https://docs.python.org/3/library/subprocess.html