SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xd0 in position 2: inva
作者:互联网
[root@hostuser src]# python3 subprocess_popen.py
File "subprocess_popen.py", line 23
SyntaxError: (unicode error) 'utf-8' codec can't decode byte 0xd0 in position 2: invalid continuation byte
#!/usr/bin/python3 # coding=gbk import os import sys curPath = os.path.abspath(os.path.dirname(__file__)) rootPath = os.path.split(curPath)[0] sys.path.append(rootPath) import subprocess from src import logutils def run(): log=logutils.logger("app",rootstdout=True,handlerList=['I','E']) str_shell='df -m && netstat -ntlp|grep python' sub=subprocess.Popen(args=str_shell,shell=True,stdin=subprocess.PIPE,stdout=subprocess.PIPE, stderr=subprocess.PIPE,universal_newlines=True) out,err=sub.communicate() #res=sub.stdout.readlines() #log.info(res) log.info(out,err,exc_info=True) if sub.returncode: #log.info(sub.returncode) if sub.returncode == 1: log.error("执行shell对象结果有空") else: raise subprocess.CalledProcessError(sub.returncode, str_shell) else: log.info(sub.pid) if __name__ == '__main__': run()
起初# -*- coding:utf-8 -*- 再运行还是报错,加上#coding=gbk问题完美解决
关于subprocess.returncode:
我总结的有以下几种情况
returncode=0 表示执行成功
returncode=1,表示执行结果为空
returncode=127 表示语句为空串
returncode=17 表示找不到表
returncode=64 表示缺失关键字
returncode=41 表示查询的字段不存在
!
标签:0xd0,__,returncode,utf,sub,subprocess,shell,byte,log 来源: https://www.cnblogs.com/SunshineKimi/p/10889027.html