关于subprocess输出乱码的问题求救

关于subprocess输出乱码的问题求救

公司网络特定网段能够ping通某监控服务器,在不想重新部署监控服务器的情况下利用python做个小工具,ping不通就报警。
发邮件的功能已经做出来,但是在ping检测的时候在windows下显示乱码。
我在mac下做个测试内容如下:

import subprocess  

icmp_out = subprocess.Popen('ping 172.10.10.68',

shell=True,

stdout=subprocess.PIPE

)

while True:

line = icmp_out.stdout.readline().strip()

a = "测试"

print(line + a.encode("UTF-8")) #不能正常输出测试中文,显示 \\xe6\\xb5\\x8b\\xe8\\xaf\\x95

print(a) #能正常输出测试中文

在mac下的pycharm运行代码,显示如下:
b'64 bytes from 172.10.10.68: icmp_seq=0 ttl=64 time=0.060 msxe6xb5x8bxe8xafx95'
测试
我已经查找了好多subprocess中文乱码问题,但是都无法解决,比如encode('gb2312'),print(line.decode('cp936').encode('utf-8'))
都不行。是在没办法了。求大佬解惑!感谢!


回答:

打印没有解码的bytes怎么会有中文哇。。。

import subprocess  

import platform

win = platform.system() == "Windows"

icmp_out = subprocess.Popen('ping 127.0.0.1' + (" -n 2" if win else " -c 2"),

shell=True,

stdout=subprocess.PIPE)

stdout, stderr = icmp_out.communicate(timeout=5)

print(stdout.decode(encoding=("gbk" if win else "utf8")))


回答:

你是用python2还是python3
我用python3.6.7本地跑了你的代码 并没有中文乱码问题


回答:

import subprocess

icmp_out = subprocess.Popen('ping 127.0.0.1' + (" -n 2" if win else " -c 2"),

shell=True,encoding="utf8"

stdout=subprocess.PIPE)

stdout, stderr = icmp_out.communicate(timeout=5)

print(stdout)

这样也可以的

以上是 关于subprocess输出乱码的问题求救 的全部内容, 来源链接: utcz.com/a/162592.html

回到顶部