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

2024-04-28 20:17:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用以下代码接收sudo的流程列表:

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

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


Tags: 代码comapple列表ossudo流程system
1条回答
网友
1楼 · 发布于 2024-04-28 20:17:16

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)

相关问题 更多 >