sys模块

一、sys模块

sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python的运行时环境。

方法详解
sys.argv 命令行参数List,第一个元素是程序本身路径
sys.modules.keys() 返回所有已经导入的模块列表
sys.exc_info() 获取当前正在处理的异常类,exc_type、exc_value、exc_traceback当前处理的异常详细信息
sys.exit(n) 退出程序,正常退出时exit(0)
sys.hexversion 获取Python解释程序的版本值,16进制格式如:0x020403F0
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.maxunicode 最大的Unicode值
sys.modules 返回系统导入的模块字段,key是模块名,value是模块
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout 标准输出
sys.stdin 标准输入
sys.stderr 错误输出
sys.exc_clear() 用来清除当前线程所出现的当前的或最近的错误信息
sys.exec_prefix 返回平台独立的python文件安装的位置
sys.byteorder 本地字节规则的指示器,big-endian平台的值是’big’,little-endian平台的值是’little’
sys.copyright 记录python版权相关的东西
sys.api_version 解释器的C的API版本

 

 

'gbk' codec can't encode character '\ufffd' in position 1636: illegal multibyte sequence

有的Windows系统下,执行print会报错'gbk' codec can't encode character '\ufffd' in position 1636: illegal multibyte sequence,这个意思是gbk编码解码了一串字符串,但这个字符串的编码不是gbk的,导致编码不同解不开而报的错。
什么原因呢,这里首先要说明下,Windows系统的默认字符编码是gbk,如果你的数据是utf-8的话,就会导致报错。并且这个报错是偶然的,并不是所有Windows电脑都会遇到。
那么在print中报这个错,是因为print内部调用了stdout来输出打印结果的,这个stdout输出打印结果时,使用的编码调用了系统的默认编码,也就是gbk,进而导致gbk编码无法解码UTF-8的字符串。
如果你的代码报了上面的错误,那么你可以在报错代码之前打印下此时stdout使用的编码:

import sys
print(sys.stdout.encoding)  # gbk

那么解决方案就是,将stdout的编码调整为utf-8编码:

import sys
# 调整之前
# print(1111, sys.stdout.encoding)  # gbk
sys.stdout.reconfigure(encoding='utf-8')  # 指定print输出的字符编码
# 调整之后
# print(sys.stdout.encoding)  # utf-8

你只需要将上面的两行代码放到你报错代码执行之前的某个位置,就行了。

posted @ 2021-05-07 19:15  silencio。  阅读(50)  评论(0编辑  收藏  举报