常用模块二---time--random--collections--json--pickle--shelve
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了常用模块二---time--random--collections--json--pickle--shelve相关的知识,希望对你有一定的参考价值。
常用模块二
=================
collections 模块
==================
========= namedtuple 可以命名的元组 ============from collections import namedtuple Point=namedtuple(‘Point‘,[‘x‘,‘y‘]) p=Point(1,2)circle=namedtuple(‘Circle‘,[‘x‘,‘y‘,‘r‘])c=circle(1,2,1)print(p.x)print(p.y) print(c.x) print(c.y) print(c.r) ======== 队列 先进先出 --双向队列 deque============ 处理任务--处理一个少一个 from collections import deque # q=deque([1,2,3]) # q.append(4) # q.appendleft(5) # q.pop() # q.popleft() # print(q) # deque([1, 2, 3]) # q.extendleft([1,2]) # 没有entend ======== 有序字典 OrderedDict============ from collections import OrderedDict # dic=dict([(‘a‘,2),(‘b‘,3),(‘c‘,6)]) # print(dic) # {‘a‘: 2, ‘b‘: 3, ‘c‘: 6} # dic=OrderedDict([(‘a‘,2),(‘b‘,3),(‘c‘,6)]) # print(dic) # OrderedDict([(‘a‘, 2), (‘b‘, 3), (‘c‘, 6)]) # ======== 有默认值得字典 defaultdict============ # from collections import defaultdict # # dic=defaultdict(list) #里面必须是可以调用的函数函数 # dic[‘k‘].append(123) # print(dic) # dic=defaultdict(lambda:‘N/A‘) # 括号里面是一个默认的值 # # # ======== counter 返回一个计数字典 ============
=================
时间 time() 模块
==================
1 时间戳 ----- 1970 1 1 00 00 00 ---- 标识唯一的时间 用来计算 2 字符串时间 ----- time.strftime(‘%Y-%m-%d %H:%M:%S‘,默认是 time.localtime()) 3 格式化时间 -----time.localtime() time.gtime() # import time # t1=time.time() #=============时间戳=======计算器应用============ # # t2=time.localtime() # 北京时间 东区 本时区的时间 #===========结构化时间=========操作======== # t3=time.gmtime() # 标准时间 晚8个小时 #===========结构化时间=========操作======== # # # t=time.mktime(time.localtime(time.time())) # 结构化--->> 时间戳 # t=time.strftime(‘%Y-%m-%d‘,time.localtime()) #结构化时间--->> 字符串时间 #==========字符串时间=======给人看======== # tt=time.strptime(‘2018-08-23‘,‘%Y-%m-%d‘) # 字符串时间-->> 结构化时间 #==========字符串时间=======给人看========= # # t4=time.ctime(time.time()) # t5=time.asctime(time.localtime()) # # time.sleep(0.1) # ====I/O阻塞 不会占用CPU # print(t2.tm_year,t2.tm_mon,t2.tm_mday,t2.tm_hour,t2.tm_min,t2.tm_sec,sep=‘:‘)
例子1 计算 几天后的时间 # time_str=‘2015-09-23‘ # def add_days(my_time,num): # temp_time=time.strptime(my_time,‘%Y-%m-%d‘) # temp_time=time.mktime(temp_time) # actual_time=temp_time+3*24*3600*num # new_time=time.localtime(actual_time) # new_time=time.strftime(‘%Y-%m-%d‘,new_time) # return new_time # print(add_days(time_str,5))
例子 2 查看一个时间过去了多久 # import time # old_time_str1=‘2015-09-10 08:30:00‘ # struct_time=time.strptime(old_time_str1,‘%Y-%m-%d %H:%M:%S‘) # true_time=time.mktime(struct_time) # time_now=time.time() # dif_time=time_now-true_time-8*3600 # struct_time=time.localtime(dif_time) # print(‘过去了%d年%d月%d天%d小时%d分钟%d秒‘%(struct_time.tm_year-1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec)) # str_time=time.strftime(‘%d %H %M %S‘,struct_time) # print(str_time)
=========================
随机数 random() 模块
==========================
# print(random.random()) # (0,1)的 float # print(random.randint(1,5)) # [1,5]的 int # print(random.uniform(1,5)) # [1,5]的 float # print(random.randrange(1,5)) # [1,5)的 int # print(random.choice(‘abcd‘)) # 可迭代对象 随机选择一个 # print(random.sample(‘abcd‘,3))# 可迭代对象 随机选择多个 返回值为列表 # li=[1,2,3,4] # random.shuffle(li) # 随机改变 可变,可以索引的 数据结构的顺序
例子 验证码 # import random # check=‘‘ # for i in range(8): # m=chr(random.choice(range(ord(‘A‘),ord(‘Z‘)))) # n=chr(random.choice(range(ord(‘a‘),ord(‘z‘)))) # o=random.randint(0,9) # string=random.choice([m,n,o]) # check+=str(string) # print(check)
================
序列化模块
================
将原本的字典,列表等内容 转换为一个字符串的过程 叫做 === 序列化 存文件网络传输
=========== 序列化的目的 ===========用某种存储形式 使自定义 对象持久化将对象从一个地方传递到另一个地方程序更具有维护性 ===json== 提供了四个功能 dumps dump load loads dumps loads 网络传输 处理字符串 # import json # d={‘k‘:‘v‘,‘k2‘:[1,2,3]} # print(d,type(d)) #{‘k‘: ‘v‘, ‘k2‘: [1, 2, 3]} <class ‘dict‘> # # sd=json.dumps(d) # print(sd,type(sd)) # 序列化 {"k": "v", "k2": [1, 2, 3]} <class ‘str‘> # # # s=‘{"k":"v","k2":[1,2,3]}‘ # # d=json.loads(s) # 反序列化 # print(d,type(d)) # {‘k‘: ‘v‘, ‘k2‘: [1, 2, 3]} <class ‘dict‘> # load dump 文件操作 数据持久化 一次性的 import json d={‘k‘:‘v‘,‘k2‘:[1,2,3]} f=open(‘json_file‘,‘w‘) json.dump(d,f,ensure_ascii=True) # f.close() f=open(‘json_file‘) ret=json.load(f) f.close() print(ret) print(‘中国‘.encode(‘gbk‘)) # b‘\xd6\xd0\xb9\xfa‘ print(ascii(‘中国‘)) #‘\u4e2d\u56fd‘ unicode ===pickle===
# json (只能处理 字典 列表 元组 等基本的数据类型 ) 用于字符串 和 python数据类型间进行转换 # 所有编程语言通用 # pickle===用于自定义的 数据类型的序列化 (游戏 人物数据) # 只有python可以使用 # # 序列化一些自定义的数据类型
===shelve=== 简单的数据类型 --- 用于修改 # import shelve # # f=shelve.open(‘shelve_file‘,writeback=True) #{‘int‘: 5, ‘str‘: ‘a‘} # # f=shelve.open(‘shelve_file‘) #{‘int‘: 1, ‘str‘: ‘a‘} # f[‘key‘]={‘int‘:1,‘str‘:‘a‘} # f[‘key‘][‘int‘]=5 # f.close()#
# f1=shelve.open(‘shelve_file‘) # 内存消耗 # ret=f1[‘key‘] # f1.close() # print(ret)
以上是关于常用模块二---time--random--collections--json--pickle--shelve的主要内容,如果未能解决你的问题,请参考以下文章