python中正确显示windows系统上其他进程的输出
来源:互联网 发布:原生家庭这个词知乎 编辑:程序博客网 时间:2024/06/10 15:53
python中正确显示windows系统上其他进程的输出
现象
try: subprocess.check_output(cmd_list) except subprocess.CalledProcessError as e: error = e.output.decode() print("error:{0}".format(error))
在windows
系统上使用python
脚本中的 subprocess
库启动其他进程后对输出内容进行打印,当输出内容有中文时会出现异常
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc9 in position 14: invalid continuation byte
可以看到明显是函数decode
在字符编码转换除了问题。
原因
输出的内容是bytes
对象,存储的是二进制内容,所以要显示的话需要先将bytes
转换为str
,bytes
的转换方法是decode
。但是二进制转换为字符需要考虑到编码问题,方法decode
默认用utf8编码,而在在我的windows上的程序输出是gbk编码。
座椅就导致了异常
解决方案
最简单的解决方案就是在 decode
方法中传入编码参数“gbk”。但是这使得python程序失去了可移植性。所以最好能获取到当前系统的编码。
import localelan,codec=locale.getdefaultlocale()
locale
模块中的getdefaultlocale
方法可以获取到当前系统的语言和编码,返回值是一个元组,第二个成员就是编码信息,只要把这个codec
变量传入 decode
方法即可。
阅读全文
0 0
- python中正确显示windows系统上其他进程的输出
- javascript中正确显示struts2标签输出的中文
- 安装的是Windows XP系统,以前打开“任务管理器”后在进程列表中会显示各个进程对应的用户名,可现在只有进程“System Idle Process”旁边显示了用户名SYSTEM,其他进程边上都是空白的,请问如何才能让它显示用户名?
- 一个进程的输出结果在另一个进程中显示
- Windows下Git中正确显示中文的设置方法
- 基于 OpenWrt 实现 tcpdump 抓包并在 Windows 系统上的 Wireshark 中格式化显示
- 关于Python读取中文(可能也包括其他一些奇葩的字符)文件,并成功在Windows终端上显示的问题
- Android结束系统中其他进程
- Android结束系统中其他进程
- python 计算windows上的某个进程的cpu使用率
- windows中python显示中文的问题
- 关于MTK模拟器中字符显示正确,手机上显示乱码的解决方式!!(原创)
- 在Console中输出类似Windows系统的日历
- python转exe可执行程序在其他系统上运行时出现的错误
- Ubuntu 系统上QQ的正确使用
- Windows进程内标准输出重定向及其在程序调试上的应用
- Windows进程内标准输出重定向及其在程序调试上的应用
- windows安装正确的python版本
- ssh 不断线 自动重连
- 一些有用的链接
- Django学习10:Django高级
- POI相关
- configure 包,出现error: no acceptable C compiler found in $PATH 问题
- python中正确显示windows系统上其他进程的输出
- Unity3d Unity 几种画线方式
- C memcpy()函数用法
- http、https的区别
- mybatis 查询多表数据使用collection处理一对多关联
- MUI页面刷新
- 淘宝新店铺如何打造爆款
- Docker Compose
- Echarts3.0 实现tooltip自动显示自动播放