我试图获取upower -d
(shell命令)的输出并使用.split()将其拆分为长列表,以便可以搜索它。
当我这样做时
import subprocess
dump = subprocess.check_output(["upower", "-d"])
print(dump.split())
它将按照预期的列表形式打印输出,除了列表中的每个元素前面都有" b" (不在字符串内)。
当我在python 2.7中做同样的事情时,它给了我期望的输出但是我希望它在python 3中。
答案 0 :(得分:5)
b""
是Python中的bytes
字面值。在Python 2.7中,""
也是一个字节串。 print(your_list)
打印每个项目的表示(repr
),这就是您在Python 3中看到b""
但在Python 2中看不到的原因。
subprocess.check_output()
返回Python 2和3中的字节,除非在Python 3中指定使用universal_newlines=True
解码字节的locale.getpreferredencoding(False)
。
from subprocess import check_output
output = check_output(["upower", "-d"], universal_newlines=True)
print(output.split())
答案 1 :(得分:1)
您也可以使用dump.decode()。split()。
解码会将字节转换为str,然后您可以像以前一样使用拆分。