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

问题描述 投票:0回答:1

我做了一个子进程,但输出的结果很奇怪。

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

这个函数也必须是异步的。

python python-3.x utf-8 subprocess
1个回答
2
投票

如果你得到的输出是一个元组,你能够提取一个给定索引的元素。

>>> 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)". 你期望有一个输出,所以有了第一个元素,而你没有得到一个错误,所以有了第二个元素。
© www.soinside.com 2019 - 2024. All rights reserved.