首页 > 解决方案 > | 不在 Subprocess.call 中工作

问题描述

每当我在带有“|”的子进程中使用命令时 在它不起作用时它有命令“|”的输出 未知,请尝试“在链接帮助中”。或者当我把这个:

#!/usr/bin/python
from subprocess import call
from shlex import split

interface = call(split("ip -o link show | awk '{print $2}' | grep wl"))

它给出了以下输出:

Error: either "dev" is duplicate, or "awk" is a garbage.

标签: pythoncommandsubprocessshlex

解决方案


尽管我无法链接两个管道操作,但您可以使用subprocess.check_output方法和类。Popen部分解决方案:

from subprocess import check_output, Popen, PIPE
from shlex import split

process = Popen(split('ip -o link show'), stdout=PIPE)
output = check_output(('awk', '{print $2}'), stdin=process.stdout)
return_code = process.wait()
print(output, return_code)

所以基本上, awk 采用process标准输出,结果保存在output变量中。


推荐阅读