Python 子进程问题和字母 B 作为结果



我尝试查询我的主机名,例如

import subprocess
p2 = subprocess.check_output('hostname')
print(p2)

结果总是开头的字母b

b'Nick-iMac.local'

可能是什么原因?

在我的本地 Mac 会话上,我看到:

$ hostname
Nick-iMac.local
b

符号表示数据类型;它不是值的一部分。它表明这是一个bytes值,而不是str值。

如果你的 Python 版本足够新,你想使用universal_newlines=True(但你可能也想切换到subprocess.run()(。

在较旧的Python版本上,p2.decode('utf-8')将返回转换为字符串的值;但是您需要知道正确的编码。

从 Python 3.7 开始,这个关键字参数被简单地称为text,尽管别名universal_newlines将继续工作。不过,这总是有点用词不当;text是对它所做的所有小事情的更好总结。

最新更新