Python subprocess.Popen 结果存储在变量中

Mat*_*att 4 subprocess python-3.x

我看过关于此的各种其他帖子,但不幸的是我仍然无法弄清楚:

如果我做这样的事情:

temp = subprocess.Popen("whoami", shell=True, stdout=subprocess.PIPE)
out = temp.communicate()
print(out)
Run Code Online (Sandbox Code Playgroud)

然后我得到一些形式的东西

(b'username\n', None)
Run Code Online (Sandbox Code Playgroud)

通过其他尝试(例如添加 .wait()),我在一行上获取了用户名,并在下一行上获取了 0 作为返回码,但是只有 0 存储在我的变量中。

有没有一种简单的方法可以将其格式化以仅将用户名存储在变量中?我尝试了类似 out[3:11] 的方法,但没有成功。

谢谢

Sve*_*ach 5

最简单的方法是使用subprocess.check_output()

username = subprocess.check_output("whoami").strip()
Run Code Online (Sandbox Code Playgroud)