Как преобразовать вывод из Python после команды sudo из <type>int в <type>str? - PullRequest
0 голосов
/ 26 мая 2020

У меня есть следующий код для получения списка процессов с помощью sudo:

sudoPass = 'mypass'
command = "launchctl list | grep -v com.apple"
x = os.system('echo %s|sudo -S %s' % (sudoPass, command))

Но я получаю ответ в виде int. Мне нужно в ул. Можно ли преобразовать его в str без потери данных?

1 Ответ

1 голос
/ 26 мая 2020

os.system возвращает (в большинстве случаев см. https://docs.python.org/3/library/os.html#os .system ) значение выхода процесса. Это означает, что большую часть времени 0 означает, что все прошло нормально.

То, что вы ищете, - это модуль подпроцесса (https://docs.python.org/3/library/subprocess.html), который позволяет вам захватывать выходные данные следующим образом:

import subprocess
sudoPass = 'mypass\n' #Note the new line
command = "launchctl list | grep -v com.apple"
x = subprocess.Popen('echo %s|sudo -S %s' % (sudoPass, command), stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
stdout, stderr = x.communicate()
print(stdout)
...