我正在尝试获取upower -d
(shell 命令)的输出,并使用 .split() 将其分割成一个长列表,以便可以对其进行搜索。
当我这样做的时候
import subprocess
dump = subprocess.check_output(["upower", "-d"])
print(dump.split())
它将按预期以列表形式打印输出,除了列表中的每个元素前面都有一个“b”(不在字符串内)。
当我在 python 2.7 中执行相同操作时,它会给出我期望的输出,但我希望它在 python 3 中。
最佳答案
b""
是 bytes
Python 中的字面量。在 Python 2.7 中,""
也是一个字节串。 print(your_list)
打印每个项目的表示( repr
),这就是您看到 b""
的原因在 Python 3 中有效,但在 Python 2 中无效。
subprocess.check_output()
在 Python 2 和 3 中都返回字节,除非 universal_newlines=True
在使用 locale.getpreferredencoding(False)
的 Python 3 中指定解码字节。
from subprocess import check_output
output = check_output(["upower", "-d"], universal_newlines=True)
print(output.split())
关于python-3.x - 将 split() 与 subprocess.check_output() 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22627999/