python3调用cmd执行命令报乱码问题

白日放歌须纵酒,青春作伴好还乡。这篇文章主要讲述python3调用cmd执行命令报乱码问题相关的知识,希望能为你提供帮助。
一、场景
python执行cmd命名调用jar包(自己封装的)执行下载Linux服务器文件到windows本地目录

cmd=java -jar javaBot.jar download 10.182.X.X username password /home/jtapp/test.txtD:\\目录\\20220410\\test\\
result = os.popen(cmd).read()

二、报错内容
UnicodeDecodeError: utf-8 codec cant decode byte 0xce in position 0: inva
三、解决方案
def cmdNoErrorCode(cmd): #解决调用os.popen执行带有中文的cmd命令乱码问题
with os.popen(cmd) as fp:
bf = fp._stream.buffer.read()
try:
result = bf.decode().strip()
except UnicodeDecodeError:
result = bf.decode(gbk).strip()
return result

调用方法:
result = os.popen(cmd).read()改为result = cmdNoErrorCode(cmd)

四、原因分析
cmd命令里带有中文,python程序使用utf-8去解码这些中文,但是解码失败,需要使用gbk解码。
【python3调用cmd执行命令报乱码问题】


    推荐阅读