python中正确显示windows系统上其他进程的输出
2017-11-25 11:37
330 查看
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 locale lan,codec=locale.getdefaultlocale()
locale模块中的
getdefaultlocale方法可以获取到当前系统的语言和编码,返回值是一个元组,第二个成员就是编码信息,只要把这个
codec变量传入
decode方法即可。
相关文章推荐
- python画图包seaborn和matplotlib中文字体显示(针对windows系统,,使用ipython notebook)
- Python中将系统输出显示在PyQt中
- python输出一些系统信息 进程内存前10名,CPU前10名信息等
- Windows编程 - 显示系统进程
- python调用os.system执行系统命令,中文输出显示乱码
- Python:输出系统所有的PID
- MFC显示其他进程对话框
- python 笔记 在windows下的程序 获取图片并显示出来
- 重定向已经运行进程的标准输出到文件的办法(通过ptrace注入代码到其他进程并运行)
- windows系统进程详解
- Python实现在Linux系统下更改当前进程运行用户
- Windows系统中安装Python模块pip numpy matplotlib
- 下一代OS系统展望之我见(针对windows,其他OS我不熟)
- windows系统下npm升级的正确姿势以及原理
- Python在Windows系统下安装环境的搭建
- python for windows 获取进程列表 part2 (自学备注)
- Windows的任务管理器怎么显示进程的图标
- 如何正确入门Windows系统下驱动开发领域?
- Python的raw_input语句包含中文,在Windows环境CMD中显示乱码的解决方法