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

网友投稿 1534 2022-09-14 15:50:55

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 can't 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解码。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Redis(开发与运维):03---Windows下安装Redis数据库
下一篇:openvpn2.5.x最新版本在windows下部署服务端支持IPV6(仅技术学习记录)
相关文章