| Не работает в 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.

person Hayden Seward    schedule 08.05.2018    source источник
comment
Есть ли способ заставить это работать   -  person Hayden Seward    schedule 08.05.2018


Ответы (1)


Вы можете использовать метод 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.

person slackmart    schedule 08.05.2018