python - | 不在 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.
解决方案
尽管我无法链接两个管道操作,但您可以使用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
变量中。
推荐阅读
- c - 当我尝试读取 hex 文件时 C 代码中的分段错误
- azure - 在 Terraform 中为 Azure 存储帐户创建事件订阅
- docker - 使用非 root 用户时,Docker Alpine、Celery(工人和节拍)失败并出现 PermissionError
- javascript - 两个组件之间的 react-to-pdf
- php - 如何创建一个 CRON 作业并将其设置为每 30 分钟或每小时一次,然后在 5 个间隔 php 后取消它
- python - 虽然循环无法正常运行
- c++ - 找到包含 200000+ 个元素的 2 个数组元素的最小乘积的最快方法
- c++ - 在公式中分配变量时会发生什么?
- javascript - 在 setMinimumSize 之后将 useContentSize 设置为 undefined
- google-drive-api - 来自 Google Drive v3 的 modifiedTime 属性的延迟