python - 如何将 subprocess.communicate() 转换为 utf-8 字符串?

标签 python python-3.x utf-8 subprocess

我创建了一个子进程,但输出很奇怪:

(b'Ping: 3.425 ms\r\nDownload: 1167.08 Mbit/s\r\nUpload: 314.93 Mbit/s\r\n', None)

而我期待的是:

Ping: 3.425 ms
Download: 1167.08 Mbit/s
Upload: 314.93 Mbit/s

这是我的代码:

process = await asyncio.create_subprocess_exec("speedtest-cli", "--simple", stdout=asyncio.subprocess.PIPE)
output = await process.communicate()
print(output)

该函数也必须是异步的。

最佳答案

如果您获得的输出位于元组中,则可以提取具有给定索引的元素:

>>> data = output[0]
b'Ping: 3.425 ms\r\nDownload: 1167.08 Mbit/s\r\nUpload: 314.93 Mbit/s\r\n'

您可以使用内置的 .decode() 方法对其进行解码:

>>> data = output[0].decode("utf-8")
Ping: 3.425 ms
Download: 1167.08 Mbit/s
Upload: 314.93 Mbit/s

引用:

  • Process.communicate() - “返回一个元组(stdout_data, stderr_data)”。
    您期望一个输出,因此是第一个元素,并且您没有收到错误,因此是第二个元素。

关于python - 如何将 subprocess.communicate() 转换为 utf-8 字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62389479/

相关文章:

python - 在Python中将字符串日期写入CSV

python - 迭代数据帧时引用上一行

python-3.x - 带有 pytest 的异步装置

python - 有没有办法在 Python 2.5 中模拟 Python 3 元类的 __prepare__ 特殊方法?

mysql修改默认字符集latin1为utf8

php - 再次卡在加载 UTF-8 字符上

python - 带有附加 query_string 的 Django HttpResponseRedirect

python - pyqt 中的拖拽启动

Python输出奇怪的字节数组

Powershell 和 UTF-8