python3调用cmd执行命令报乱码问题
Posted cuihuayu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3调用cmd执行命令报乱码问题相关的知识,希望对你有一定的参考价值。
一、场景
python执行cmd命名调用jar包(自己封装的)执行下载Linux服务器文件到windows本地目录
cmd=java -jar javaBot.jar download 10.182.X.X username password /home/jtapp/test.txt D:\\目录\\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执行命令报乱码问题的主要内容,如果未能解决你的问题,请参考以下文章