我尝试查询我的主机名,例如
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
是对它所做的所有小事情的更好总结。