python模块
2020-10-17 18:40:45 50 举报
AI智能生成
登录查看完整内容
python模块
作者其他创作
大纲/内容
python模块
time模块
表示时间的三种方式
1、时间戳(timestamp)
#导入时间模块>>>import time#时间戳>>>time.time()1500875844.800804
2、格式化的时间字符串(Format String)
%y
两位数的年份表示(00-99)
%Y
四位数的年份表示(000-9999)
%m
月份(01-12)
%d
月内中的一天(0-31)
%H
24小时制小时数(0-23)
%I
12小时制小时数(01-12)
%M
分钟数(00==59)
%S
秒(00-59)
%a
本地简化星期名称
%A
本地完整性其名称
%b
本地简化的月份名称
%B
本地完整的月份名称
%c
本地相应的日期表示和时间表示
%j
年内的一天(001-366)
%p
本地A.M.或P.M.的等价符
%U
一年中的星期数(00-53)星期天为星期的开始
%w
星期(0-6),星期天为星期的开始
%W
一年中的星期数(00-53)星期一为星期的开始
%x
本地相应的日期表示
%X
本地相应的时间表示
%Z
当前时区的名称
%
%号本身
#时间字符串>>>time.strftime(\"%Y-%m-%d %X\")'2017-07-24 13:54:37'>>>time.strftime(\"%Y-%m-%d %H-%M-%S\")'2017-07-24 13-55-04'
3、元组(struct_time)
几种格式之间的转换
计算时间差
datetime模块
random模块
随机小数
随机整数
随机选择一个返回
随机选择多个返回
打乱列表顺序
re模块
正则匹配
正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
单个字符匹配
重复匹配
分组
| 匹配左边或者右边
常用方法
findall
全部找到返回一个列表
search
match
split
分割 可按照任意分割符进行分割
sub
替换
obj = re.complie('\\d{2}')
命名分组
ret = re.search(\"<(?P<tag_name>\\w+)>\\w+</(?P=tag_name)>\
自定义模块
什么是模块?
1、使用python编写的代码(.py文件)2、已被编译为共享库或DLL的C或C++扩展3、包好一组模块的包4、使用C编写并链接到python解释器的内置模块
为什么要使用模块?
如果退出python解释器然后重新进入,那么之前定义的函数或者变量都将丢失,因此我们通常将程序写到文件中以便永久保存下来,需要时就通过python test.py方式去执行,此时test.py被称为脚本script。 随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用
模块的分类
内置模块
第三方模块
调用模块的方法
import
from...import...
导入模块的三件事
1、创建一个以模块命名的名称空间2、执行这个名称空间里面的代码3、通过此模块名.的方式引用该模块里面的内容
为模块起别名
import tbjx as tt.read1()
序列化模块
json模块
1、不同语言都遵循的一种数据转化格式,即不同语言都是用的特殊字符串2、json序列化只支持部分Python数据结构:dict、list、tuple、str、int、float、True、False、None
用于网络传输
dumps
序列化:将一个字典转换成一个字符串
loads
反序列化:讲一个字符串格式的字典转换成一个字典
用于文件写读
dump
接收一个文件句柄,直接将字典转换成json字符串写入文件
load
接收一个文件句柄,直接将文件中的json字符串转换成数据结构返回
其他参数
ensure_ascii
为True时,所有非ASCII码字符显示为\\uXXXX序列,在dump时将ensure_ascii设置为False,存入json文件的中文即可正常显示
separators
sort_keys
将数据根据keys的值进行排序
json序列化存储多个数据到同一个文件中
pickle模块
1、只能是Python语言遵循的一种数据转化格式,只能在Python语言中使用。2、支持Python所有的数据类型包括实例化对象。
用于文件传输
同json模块
pickle序列化存储多个数据到一个文件中
shelve模块
类似于字典的操作方法去操作特殊的字符串
os模块
常用的
os.getcwd()
获取当前工作目录,即当前python脚本工作的目录路径
os.chdir('dirname')
改变当前脚本的工作目录;相当于shell下cd
os.curdir
返回当前目录:('.')
os.pardir
获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2')
可生成多层递归目录
os.removedirs('dirname1')
若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推
os.mkdir('dirname')
生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname')
删除单极目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname')
列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove
删除一个文件
font color=\"#c41230\
重命名文件/目录
os.stat('path/filename')
获取文件/目录信息
os.system('bash command')
运行shell命令,直接显示
os.popen('bash command').read()
运行shell命令,获取执行结果
os.environ
获取系统环境变量
os.path.abspath(path)
返回path规范化的绝对路径
os.path.split(path)
将path分割成目录和文件名二元组返回
os.path.dirname(path)
返回一个path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path)
返回path最后的文件名。如何path以/或\\结尾,那么就会返回空值,即os.path.split(path)的第二个元素
os.path.exists(path)
如果path存在,返回True;如果path不存在,返回False
os.path.isfile(path)
如果path是一个存在的文件,返回True。否则返回False
os.path.isabs(path)
如果path是绝对路径,返回True
os.path.isdir(path)
如果path是一个存在的目录,则返回True
os.path.getatime(path)
返回path所指向的文件或者目录的最后访问时间
os.path.getmtime(path)
返回path所指向的文件或目录的最后修改时间
os.path.getsize(path)
返回path的大小
不常用的
os.sep
os.linesep
os.pathsep
os.name
输出字符串指示当前适用平台 win->'nt'; Linux->'posix'
os.stat('path/filename') 获取文件/目录信息的结构说明
stat 结构:
st_mode: inode保护模式
st_ino: inode节点号
st_dev: inode驻留的设备
st_nlink: inode的链接数
st_uid: 所有者的用户ID
st_gid:所有者的组ID
st_size:普通文件以字节为单位的大小;包含等待某些特殊文件的数据
st_atime:上次访问的时间
st_mtime:最后一次修改的时间
st_ctime:有操作系统报告的'ctime'。
sys模块
sys.argv
命令行参数List,第一个元素是程序本身路径
sys.exit(n)
sys.version
获取Python解释程序的版本信息
sys.path
返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform
返回操作系统平台名称
hashlib模块
hashlib的特征以及使用要点
1、bytes类型数据-->通过hashlib算法-->固定长度的字符串2、不同的bytes类型数据转化成的结果一定不同3、相同的bytes类型数据转化成的结果一定相同4、此转化过程不可逆
密码加密
普通加密
import hashlibmd5 = hashlib.md5()md5.update('123456'.encode('utf-8'))print(md5.hexdigest())# 计算结果如下:'e10adc3949ba59abbe56e057f20f883e'# 验证:相同的bytes数据转化的结果一定相同import hashlibmd5 = hashlib.md5()md5.update('123456'.encode('utf-8'))print(md5.hexdigest())# 计算结果如下:'e10adc3949ba59abbe56e057f20f883e'# 验证:不相同的bytes数据转化的结果一定不相同import hashlibmd5 = hashlib.md5()md5.update('12345'.encode('utf-8'))print(md5.hexdigest())# 计算结果如下:'827ccb0eea8a706c4c34a16891f84e7b'
加盐加密
固定的盐
ret = hashlib.md5('xx教育'.encode('utf-8')) # xx教育就是固定的盐ret.update('a'.encode('utf-8'))print(ret.hexdigest())
动态的盐
username = '太白金星666'ret = hashlib.md5(username[::2].encode('utf-8')) # 针对于每个账户,每个账户的盐都不一样ret.update('a'.encode('utf-8'))print(ret.hexdigest())
文件一致性校验
collections模块
在内置数据类型(dict、list、set、tupel)的基础上,collections模块还提供了几个额外的数据类型
1、namedtuple:生成可以使用名字来访问元素内容的tuple2、deque:双端队列,可以快速的从另外一侧追加和推出对象3、Counter:计数器,主要用来计数4、OrderedDict:有序字典5、defaultdict:带有默认值的字典
namedtuple
查找坐标
deque
为了高效实现插入和删除操作的双向列表,适用于队列
OrdderedDict
在对字典做迭代时无法确定键的值时用
defaultdict
>>> from collections import defaultdict>>> dd = defaultdict(lambda: 'N/A')>>> dd['key1'] = 'abc'>>> dd['key1'] # key1存在'abc'>>> dd['key2'] # key2不存在,返回默认值'N/A'
Counter
logging模块
函数式简单配置
import logging logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
日志级别等级
CRITICAL > ERROR > WARNING > INFO > DEBUG
logging.basicConfig() 函数中可通过具体参数来更改logging模块默认行为,可用参数有
filename
filemode
文件打开方式,在指定了filename是使用这个参数,默认值为'a'还可以指定为'w'
format
指定handler使用得日志显示格式
%(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
字符串形式的当前时间。默认格式是'2020-10-17 17:42:32,869' 逗号后面是毫秒
%(thread)d
线程ID。可能没有
%(threadName)s
线程名。可能没有
%(process)d
进程ID。可能没有
%(message)s
用户输出的消息
datefmt
指定日期时间格式
level
设置rootlogger的日志级别
stream
logger配置文件
0 条评论
回复 删除
下一页