Errod: экранирование команд AWK в подпроцессе - PullRequest
0 голосов
/ 29 апреля 2019

Мне нужно знать, что мне нужно здесь, чтобы успешно выполнить команду подпроцесса.

Я уже пробовал другие решения, предоставляемые при переполнении стека.

>>> 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 Ответ

1 голос
/ 29 апреля 2019

Popen возвращает кортеж из двух потоков данных (stdout, stderr), а не 3. Передайте все, что вы хотите, , отправьте в communicate в качестве параметра input.

communicate() возвращает кортеж (stdout_data, stderr_data). Данные будут строками, если потоки были открыты в текстовом режиме; в противном случае, байты.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...