我正在学习subprocess
,但我对以下代码有点困惑:
import subprocess
proc = subprocess.Popen('lspci', stdout=subprocess.PIPE)
for line in proc.stdout:
print(line)
输出:
^{pr2}$如您所见,输出是格式化的。但我不知道为什么结尾有b''
和{
如果我在终端上运行这个命令,就没有这些字符。在
正常输出:
00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)
00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)
我怎样才能去掉它们?在
您可能正在使用python3-python改变了某些对象读/写数据的方式,现在有了一个真正的
bytes()
对象。要获得所需的字符串,只需:您可能还需要从输出中去掉换行符(
^{pr2}$\n
);我不记得stdout
如何进行缓冲/报告:b''
是python3中bytes
对象的文本表示。在要按原样打印字节,请使用二进制流
sys.stdout.buffer
:要获得文本(Unicode字符串)的输出,可以使用
^{pr2}$universal_newlines=True
参数:locale.getpreferredencoding(False)
字符编码用于解码输出。在如果子进程使用不同的编码,则可以使用
io.TextIOWrapper()
显式指定它:有关Python2代码和指向可能问题的链接,请参见Python: read streaming input from subprocess.communicate()
我认为您使用的是python 3:
b表示字节,它表示它是一个字节序列,它等价于Python2.6+中的普通字符串
见https://docs.python.org/3/reference/lexical_analysis.html#literals
相关问题 更多 >
编程相关推荐