如何在 sudo 命令后将 Python 的输出从 <type> int 转换为 <type> str?

How to convert output from Python after sudo command from <type> int to <type> str?

我有以下代码来接收带有 sudo 的进程列表:

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

但是,我收到了 int 格式的答复。我需要在海峡。是否可以在不丢失数据的情况下将其转换为 str?

os.system returns(在大多数情况下,参见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)