常用模块
Posted sw-z
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块相关的知识,希望对你有一定的参考价值。
time--时间模块
时间三大类:
- 时间戳 time.time()
- 结构化时间(年月日时分秒 一周内第几天,一年内第几天,是否夏令时) time.localtime() time.gmtime()
- 格式化时间 time.strftime(‘%Y-%m-%d %X %p‘)
时间戳与结构化时间可以互相转换
结构化时间与格式化时间可以互相转换
datetime 日期时间模块(datetime包中有datetime模块)
方法
- datetime.datetime.now() 获取当前时间
- datetime.datetime.now().hour() 获取部分时间
- datetime.datetime.now().replace(year = 1999) 替换部分时间
sys 解释器模块
方法
- sys.path 环境变量 sys.path.append(路径)添加环境变量
- sys.modules 查看已加载的模块
- sys.argv 获取终端传入的参数(列表)
- sys.version 查看解释器版本
- sys.platform 查看平台名称
- sys.exit() 退出
os 操作系统模块
os:
- os.getcwd() 获取当前工作目录
- os.chdir(目录路径) 改变工作目录
- os.curdir 当前目录 .
- os.pardir 上级目录 ..
- 掌握os.makedirs(目录路径) 创建目录
- os.mkdir(目录名称) 创建单个目录
- os.removedirs(目录路径) 递归删除
- os.rmdir(目录名称) 删除单个目录
- os.remove(文件路径) 删除文件
- os.listdir(文件夹路径) 获取所有文件和文件夹名称
*os.path:
- os.path.abspath(文件相对路径) 返回绝对路径
- os.path.split(文件路径) 将路径拆分为文件夹路径和文件名称两部分
- os.path.dirname(__file__) 获取文件所在文件夹的路径
- os.path.basename(文件路径) 获取路径最后一级名称
- os.path.exists(路径) 判断该路径是否存在
- os.path.isabs(路径) 判断是否是绝对路径
- os.path.join(‘c:\‘,‘xx‘) 将对个名称拼接为路径
- os.path.getsize(‘文件路径‘) 输出文件字节数
- os.path.normcase(‘路径‘) 路径规范化 大学变小写 斜杠统一
random 随机模块
方法:
- random.random() 0-1的随机浮点数(不包括1)
- random.randint(x,y) x-y的随机整数
- random.randrange(x,y) x-y的随机整数(不包括y)
- random.uniform(x,y) x-y的随机浮点数
- random.sample(list,x) 在列表中随机取x个值
- random.shuffle(list) 将列表中的值打乱顺序(动作)
- random.choice(list) 在列表中随机取1个值
- random.choices(list,k=x) 在列表中随机取 x个值 并放入新列表中
shutil 高级文件操作模块
方法
- shutil.copyfileobj(复制文件名,新文件名) 拷贝文件
- shutil.make_archive(要压缩的文件名,压缩格式 ,压缩文件放的路径) 压缩文件
- shutil.unpack_archive(压缩文件的路径) 解压缩文件
序列化模块:
序列化是指将内存中的数据结构转化为一种中间格式并储存在硬盘上
反序列化是将中间格式还原为内存中的数据结构
序列化模块可以更加方便的将数据存入硬盘
1.pickle python专用序列化模块(支持python所有数据类型)
方法:
-
- dumps 序列化
- loads 反序列化
- dump 封装了write和read更加方便
- load
序列化
user = {}
with open(‘db.pkl‘,‘ab‘) as f:
x = pickle.dumps(user)
f.write(x)
with open(‘db.pkl‘,‘rb‘) as f:
pickle.dump(user,f)
with open as f:
pickle.loads(f.read())
pickle.load(f)
2.shelve python专用序列化模块(支持python所有数据类型)
shelve方法不需要关心文件模式
序列化
user = {}
s = shelve.open(‘db.shv‘) #打开文件
s[‘user‘] = user
s.close()
反序列化
s = shelve.open(‘db.shv‘,writeback=True)
x = s[‘user‘]
print(x)
s.close()
3.json 通用序列化模块
json是一种通用的数据格式
js 中的数据类型 python数据类型 的对应关系
{} 字典
[] list
string "" str
int/float int/float
true/false True/False
null None
json格式x.json:
user=
{
"users": [{
"name": "agon",
"age": 68
},
{
"name": "agon",
"age": 68
}
]
}
方法:
dumps
loads
dump
load
序列化
with open(‘db.json‘,‘wt‘,encoding=‘utf-8‘) as f:
f.write(json.dumps(user))
反序列化
with open(‘‘db.json,‘rt‘,encoding=‘utf-8‘) as f:
user = json.loads(read())
4.xml 比较旧的通用序列化模块
xml格式a.xml:
<标签>
<标签>
<标签>内容</标签>
</标签>
</标签>
可以采用另一种简化语法,可以在一个标签中同时表示起始和结束标
签。这种语法是在?于符号之前紧跟一个斜线(/)
解析器会将其翻译成<百度百科词条></百度百科词条>。
例例如<百度百科词条/>。
方法
form xml.etree import ElementTree as ET
-
- ETree = ET.parse(‘db.xml‘) 解析xml文件
- root = ETree.getroot() 获取根标签
- for item in root.iter(标签名) 获取标签的方式1
- root.find(标签名).attrib 获取标签的方式2
- rootTree.findall(标签名) 获取标签的方式3
- item.tag 标签名称
- item.attrib 标签熟悉
- item.text 文本内容
- root.find(标签).get(标签) 获取单个属性
- root.remove 删除子标签
- 添加子标签
tag = ElementTree.Element(‘标签’,{‘属性’,‘值’})
root = append(tag)
ETree.write(‘‘db.xml‘,encoding=‘utf-8‘)
configparser 配置文件模块
配置文件是包含配置程序信息的文件
需要改但不经常改的信息为配置信息
配置文件中有两种内容
section 分区和option 选项
- config = configparser.ConfigParser() 创建一个解析器
- config.read(‘db.cfg‘,encoding=‘utf-8‘) 解析
- config.sections() 获取所有分区名
- config.option() 获取所有选项名
- config.get(分区,选项) 获取选项的值(返回字符串)
- config.getint() 获取值(返回int类型)
- config.has_section() 判断是否有该分区
- config.has_option() 判断是否有该选项
- config.add_section() 添加分区
- config.set(分区,选项,值) 修改值
- config.remove_option() 删除选项
logging 日志文件模块
日志配置文件组成部分
日志生成器 loggers(产生书写日志的配置文件)
过滤器 filters()
处理器 handlers(将信息打印到相应的日志文件)
格式处理器 formatters(将信息格式化)
默认级别30 级别大于30日志才显示
logging.debug() 写入调试信息10
logging.info() 普通消息20
logging.warning() 警告30
logging.error() 错误40
logging.critical() 严重错误50
mylog = logging.getLogger(日志生成器) 创建(获取)日志生成器
mylog.setLevel(10) 设置生成器级别
fh = logging.FileHandler(日志名,encoding) 创建一个日志处理器
fm = logging.Formatter(格式)
logging.config.dictConfig() 解析日志配置文件
将mylog,fh,fm关联
mylog.addHandler(fh)
fh.setformatter(fm)
日志继承值propagate默认True True为继承False为不继承
mylog.propagate = Flase
流处理器StreamHandler()让格式化信息显示在控制台
logging.StreamHandler()
%(name)s:Logger的名字,并非用户名,详细查看 %(levelno)s:数字形式的日志级别 %(levelname)s:文本形式的日志级别 %(pathname)s:调用日志输出函数的模块的完整路径名,可能没有 %(filename)s:调用日志输出函数的模块的文件名 %(module)s:调用日志输出函数的模块名 %(funcName)s:调用日志输出函数的函数名 %(lineno)d:调用日志输出函数的语句所在的代码行 %(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示 %(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数 %(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒 %(thread)d:线程ID。可能没有 %(threadName)s:线程名。可能没有 %(process)d:进程ID。可能没有 %(message)s:用户输出的消息
hashlib hash算法加密模块
hash算法是将一个仁义村的数据根据hash算法计算得到一个固定长度的特征码
h = hashlib.md5(‘123’,encoding=‘utf-8’) md5加密(32位特征码)
hashlib.sha512() sha512加密(128位特征码)
h.hexdigest() 获取特征码
加盐
hashlib.md5(‘123‘.encode(utf-8)).update(‘asdfghjkl‘.encode(utf-8))
re--匹配字符串模块(正则表达式)
正则表达式-- 由一些带有特殊意义的符号组成的式子,可以处理字符串
subprocess--子进程模块
以上是关于常用模块的主要内容,如果未能解决你的问题,请参考以下文章