如何将sudo命令后的输出从 int转换为 str?

问题描述 投票:0回答:1

我有以下代码来使用sudo接收进程列表:

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

但是,我收到int的答案。我需要在STR。是否可以在不丢失数据的情况下将其转换为str?

python macos sudo
1个回答
1
投票

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)
© www.soinside.com 2019 - 2024. All rights reserved.