gpt4 book ai didi

python - 子进程 popen 标准输出

转载 作者:行者123 更新时间:2023-11-30 23:04:56 25 4
gpt4 key购买 nike

我正在学习subprocess,但我对这段代码有点困惑:

import subprocess

proc = subprocess.Popen('lspci', stdout=subprocess.PIPE)
for line in proc.stdout:
print(line)

输出:

b'00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)\n'
b'00:02.0 VGA compatible controller: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor Graphics Controller (rev 09)\n'

如您所见,输出已格式化。但我不知道为什么最后会有字符b''\n

如果我在终端中运行此命令,则不会有这些字符。

正常输出:

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() 对象。要获得你想要的字符串,你只需要:

print(line.decode("utf8")) ## or some encoding; that one should print anything though

您可能还需要从输出中删除换行符 (\n);我不记得 stdout 如何进行缓冲/报告:

print(line.decode("utf8").strip())

关于python - 子进程 popen 标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33435110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com