如何将subprocess.communicate()转换为utf8字符串?

2024-09-30 06:34:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我做了一个子流程,但输出很奇怪:

(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)

该函数也必须是异步的


Tags: 代码noneasynciooutputdownload流程awaitping
1条回答
网友
1楼 · 发布于 2024-09-30 06:34:38

如果得到的输出是元组,则可以提取具有给定索引的元素:

>>> 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

参考资料:

  • ^{}-“返回一个元组(stdout_data, stderr_data)”。
    您需要一个输出,因此是第一个元素,而您没有得到错误,因此是第二个元素

相关问题 更多 >

    热门问题