python-3.x - 将 split() 与 subprocess.check_output() 结合使用

标签 python-3.x unicode subprocess

我正在尝试获取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/

相关文章:

pipe.communicate 的 Python 编码

java - Android热敏打印机阿拉伯语问题

java - 使用密码执行 Java 进程

python - 最后在 Python 3 生成器中尝试

python-3.x - 使用 python3 和 mod_wsgi(无 Django)的基本 Web 表单示例?

c++ - 在 std::string 中存储 unicode UTF-8 字符串

python - IPython没有子进程

Python 字符串比较给出意外的输出

python - 在 if 和 if not 语句中使用多个条件 (python)

python - 缩进错误: unindent does not match any outer indentation level python