模块
pip install #模块名称 #安装模块 #导入模块 from collections import namedtuple
collections模块
提供了几个额外的数据类型:
Counter、deque、defaultdict、namedtupleOrderedDict
1.namedtuple:生成可以使用名字来访问元素内容的tuple
2.deque:双端队列,可以快速的从另外一侧追加和推出对象
3.Counter:计数器
4.OrderedDict字典有序化
5,defaultdict字典解决方法
namedtuple 可命名元祖:
对于可命名元祖来说可以通过名字访问.
namedtuple('Point',['x','y']) p=P(1,2) print(p.x) print(p.y)
实用性:让别人看代码比较方便
deque模块 双端队列:
队列:先进先出
两端值先拿出来,从两端放值拿值。有appendleft和popleft
OrderedDict字典有序:
from collections import OrderedDict
直接强转字典时把dict换成OrdereDict
defaultdict字典解决:
from collections import defaultdict values=[11,22,33,44,55,66,77,88,99] my_dict=defaultdict(list) print(my_dict) print(my_dict.get('k')) my_dict['k'].append(1) print(my_dict)
省下了一个创建键值的步骤
Counter 计算每个字符字典中出现的次数:
同上导入模块方法
用字典方法将字符串字母出现次数来排序
时间模块
直接import time
time.time()时间戳
表示时间三种方式:
(1)时间戳,从1970年1月1日零点开始按秒计算的偏移量,float型。标识时间
然后用这个时间计算时间
(2)格式化的时间字符串(Format String):'1999-12-06'
(3)元祖时间()
time.strftime('')后面给一个格式化格式
%Y是年%m是月%d是天,除了年是小写 %H:%M:%S 时分秒都大写
大%I是12小时制的%p是上下午
%a是简化星期名大写不简化
%c本地相应标准时间
%j年内的一天
%x 日期
%X时间
time.localtime() 默认参数当前时间 也就是括号内time.time
time.struct_time()做时间计算 结构化时间
time.gmtime()是utc 伦敦的时间 后面可以加时间戳数字时间
时间戳转结构化↑
time.mktime()结构化转时间戳
结构化时间转字符串时间:
time.strftime()括号前要转换的,后面是格式
字符串时间转化结构化时间
time.strptime()前面写进去时间,括号后面是给的是什么格式
结构化时间转%a%b%d%H:%M:%S %Y串
time.asctime()里面可以是time.localtime()
将结构化时间转换成固定格式
串转成结构化时间
time.ctime()给一个时间戳就可以
时间元祖:
做时间计算的
random模块
random.random() #随机生成大于0小于1之间的小数 random.uniform(1,3) #随机生成大于1且小于3的小数 random.randint(1,5) #随机生成大于等于1且小于等于5之间的整数 random.randrange(1,10,2) #大于等于1且小于10之间的奇数 random.choice([1,'23',[4,5]]) #列表里面随机返回一个,参数是一个可迭代对象 random.sample([1,'23',[4,5]],2) #任意两个组合
打乱顺序:
item=[1,2,3,4] random.shuffle(item) print(item)
随机验证码:
1.
ret=random.sample(range(10),6) print(''.join((str(i)for i in ret)))
2.
num_lst=[] for i in range(6): num=random.randint(0,9) num_lst.append(str(num)) print(''.join(num_lst)))
英文
def func(n): ret='' for i in range(n): num = random.randint(0,9) ALPHA = chr(random.randint(65,90)) alpha=chr(random.randint(97,122)) value=random.choice([str(num),ALPHA,alpha]) ret +=value return ret print(func(6))
sys模块
与python解释器连接的:
sys.argv文件的相对路径。可以用来写登录
import sys if sys.argv[1] =='alex' and if sys.argv[2]=='123' print('登陆成功') else: print('登陆失败')
sys.version #打印的是python的version可以用来判断是否支持版本
用startswith来判断开头不支持的话 sys.exit()退出
sys.path 从前往后看模块导入路径
可以在sys.path后面.append将文件路径加进去
sys.platform 返回操作系统平台 判断操作系统平台 来更换路径
OS模块
os模块是与操作系统交互的一个接口
1.和目录相关的
2.和路径相关的
3.和文件相关的
4.和操作系统相关的
5.和执行系统命令相关的
一层用mkdir
多层用makedirs
os.listdir(os.getcwd()) #将内容变成列表拿出来 os.stat('path/filename') #获取文件状态stat结构 os.sep #路径拼接 os.linesep #输出当前平台使用的行终止符 os.pathsep #输出用于分割文件路径的字符串 os.name #看当前操作系统 os.system('dir') #看当前目录下的所有文件 有些像exec 执行命令用这个 os.popen #有点像eval 要取得信息的话就用这个 os.path os.path.abspath(path) #返回path规范化的绝对路径 #其实就是os.path.split(path)的第一个元素 os.path.dirname(path) #返回path目录 basename返回最后一个文件目录 os.path.join #可以将路径拼接 会自己按照操作系统拼接
序列化模块
将原本的字典,列表等内容转换成一个字符串的过程就叫做序列化
文件里只能存字符串
将程序中的数据类型转换成str
应用:
1.存文件
2.网络传输
序列化的目的
1.以某种存储形实使自定义对象持久化
2.将对象从一个地方传递到另一个地方
3.使程序更具维护性
数据结构转str是序列化
反着转是反序列化
json模块
dumps是序列化过程
loads是反序列化的过程
import json d={'k':'v','k2':[1,2,3,4]} sd=json.dumps(d) print(sd,type(sd)) j=json.loads(sd) print(j,type(j))
dump可以传进文件
load可以从文件中拿出转换
ensure_ascii=False 在往文件存的时候用
两种方法:
1.序列化 dump dumps
2.反序列化 load loads
json一般只用于处理字典列表元祖
pickle模块当自己定义了一些数据类型时可以用
pickle 可以序列化一些自定义的数据类型 游戏
json 是所有编程语言通用的一种数据类型 网络编程更多
shelve模块
python提供的序列化工具
import shelve f = shelve.open('shelve_file') f['key']={'int':10} 可以多个key f.close() import shelve f1 = shelve.open('shelve_file') existing=f1['key'] f1.close()
这个模块有限制,不支持多个应用同一时间往同一个DB进行写操作。
设置writeback=True才能修改key ,否则key存在无法修改