一 collections模块 :数据类型模块
namedtuple:可命名元组
p=collections.namedtuple(‘p‘,[‘x‘,‘y‘]) a=p(1,2) print(a.x+a.y)
deque:双端队列 1 append:后添加;2 appendleft:前添加;3 pop:从后向前取值;4 popleft:从前到后取值
q=collections.deque([1,2,3,4]) q.append(5) #后面添加 q.appendleft(7) #第一个位置添加 q.pop() #最后一个位置读取 q.popleft() #第一个把位置开始读取 print(q)
ordereddict:创建有序的字典
# d=collections.OrderedDict([(‘a‘,1),(‘b‘,2),(‘d‘,3)]) # for i in d.items():print(i)
defaultdict:默认字典的value值
# values = [11, 22, 33,44,55,66,77,88,99,90] # dic=collections.defaultdict(list) # for l in values: # if l>66: # dic[‘k1‘].append(l) # else: # dic[‘k2‘].append(l) # print(dic)
counter计算字符出现的次数
print(collections.Counter(‘asasfewruvs‘))
二 time模块:时间模块
time.time():当前时间戳 (计算机识别的时间) 从1970年1月1日00:00:00开始计算
# print(time.time(
time.strftime():时间字符串 结构化时间转成字符串时间 #(人类识别的时间)
# print(time.strftime(‘%Y-%m-%d‘))
time.localtime():结构化时间(计算国内时间) 时间戳装成结构化时间(计算国内时间)
# print(time.localtime())
time.gmtime():结构化时间(计算国际时间) 时间戳转换成结构化时间(计算国际时间)
# print(time.gmtime())
time.mktime():结构化时间转成时间戳 (机器识别的时间)
# print(time.mktime(time.localtime()))
time.strptime():字符串时间转成结构化时间 (计算时间)
# time_1=time.strftime(‘%Y-%m-%d‘) # print(time.strptime(time_1,"%Y-%m-%d"))
time.asctime():结构化时间转成字符串时间(转换后有固定的格式)
# print(time.asctime())
time.ctime():时间戳转成字符串时间(转换后有固定的格式)
# print(time.ctime())
计算时间差:
# import time # end=time.time() # start=time.mktime(time.strptime(‘2017-09-11 08:30:00‘,‘%Y-%m-%d %H:%M:%S‘)) # end_start=end-start # cha_time=time.localtime(end_start) # print(‘已经过去了%s年%s月%s天%s小时%s分种%s秒‘%(cha_time.tm_year-1970,cha_time.tm_mon-1,cha_time.tm_mday-1,cha_time.tm_hour-0,cha_time.tm_min-1,cha_time.tm_sec-0))
时间日期格式化符合 %y:两位数的年份 %Y:四位数的年份 %m:月份 %d:天 %H:24进制的小时 %I:12进制的小时 %M:分钟 %S:秒 %a:本地简化星期名称 %A:本地完整星期名称 %b:本地简化的月份名称 %B:本地完整的月份名称 %c:本地相应的日期和时间的表示 %j:年内的一天 %p:本地AM或者PM的等价符 %U:一年中的星期数,星期天为星期的开始 %w:星期(0-6),星期天为开始 %W:一年中的星期数,星期一为开始 %x:本地相应的时间表示 %X:当前时期的名称 %%:%本身
三 random模块:随机模块
random:0到1之间的小数
print(random.random())
uniform:自定义小数范围
print(random.uniform(1,4))
randint:自定义随机整数的范围(取头取尾)
print(random.randint(1,10))
randrange:自定义随机整数的范围(取头不取尾)还可以定义步长取
print(random.randrange(1,20,2))
choice:随机返回一个值
print(random.choice([1,2,3,44,(2,4,6)]))
sample:随机返回多个值,自定义返回值的个数
print(random.sample([1,2,3,44,(2,4,6)],3))
shuffle:打乱顺序
l=[1,2,3,4,5,6,7,8,9] random.shuffle(l) print(l)
随机验证码
# import random # def yan(n): # ll=‘‘ # for num in range(n): # i=random.randint(0,9) # j=chr(random.randint(65,90)) # z=chr(random.randint(97,122)) # l=random.choice([str(i),j,z]) # ll+=l # print(ll) # yan(6)
四 os模块
os.getcwd:获取当前的工作目录 os.chdir:改变当前脚本的工作目录 os.curdir:返回当前目录 os.pardir:获取当前目录的父目录字符串名 os.makedirs:可生成多层递归目录 os.removedirs:递归删除上一级的空目录 os.mkdir:生成单层目录 os.rmdir:删除单级空的目录 os.listdir:列出指定目录下的所有的文件和子目录 os.remove:删除一个文件 os.rename:修改文件名/目录名 os.stat:获取文件/目录信息 os.sep:输出操作系统特定的路劲分割符 os.linesep:输出当前平台的行终止符 os.pathsep:输出用于分割文件路径的字符串 os.name:输出字符串指示的当前平台 os.system:运行shell命令直接显示 os.popen:运行shell命令,获取执行结果 os.environ:获取系统的环境变量 os.path.abspath:返回path规范化的绝对路径 os.path.exists:如果path存在,返回True;相反返回False os.path.isabs:如果path是绝对路径返回True os.path.isfile:如果是是一个存在的文件返回True os.path.isdir:如果是一个存在的目录返回True os.path.join:路径拼接 os.path.getatime:返回所指向文件或者目录最后的访问时间 os.path.getmtime:返回所指文件或者目录的最后修改时间 os.path.getsize:返回文件或者目录的大
五 sys模块
sys.argv:命令行参数list,第一个元素是程序的路径本身
sys.exit:退出程序
sys.version:获取python解释器的版本信息
sys.path:返回模块的 搜索路径
sys.platform:返回操作系统平台名称
六 序列化模块
什么叫做序列化:将原本的数据类型转换成字符串的过程就叫做序列化;相反将字符串转为非字符串的数据类型就叫做反序列化
序列化的好处:1以某种存储形式使自定义对象持久化;2 将对象从一个地方传送到另一个地方;3 使程序更具有维护性
序列化的几个模块:json模块:用于各种开发语言之间的,只能在基本的数据类型上使用
pickle模块:只能用于python开发中,不过可以对特殊的数据类型进行操作
shelve模块:只有open一个方法,直接就可以对文件句柄操作。读取的内容是以存入的类型读取的。
json和pickle的四种功能:dump和dumps:序列化,转成字符串,dump用于文件操作;dumps用于网络传输。
load和loads:反序列化,转换成非字符串(内容中假如要用引号,必须用双引号)。load用于文件操作,loads用于网络传输。
json:
import json # a={‘fan‘:123,‘jie‘:321} # with open(‘a‘,‘w‘,encoding=‘utf-8‘)as f: # json.dump(a,f) #序列化写入文件 # # with open(‘a‘)as f: # print(json.load(f)) #反序列化读取 # print(type(json.dumps({‘fan‘:123,‘jie‘:321}))) #序列化 # print(type(json.loads(‘{"fan":123,"jie":321}‘))) #反序列化
pickle:
# import pickle # a={‘fan‘:123,‘jie‘:321} # with open(‘a1‘,‘wb‘)as f: # pickle.dump(a,f) #序列化写入文件 # # with open(‘a1‘,‘rb‘)as f: # print(pickle.load(f)) #反序列化读取 # # # print(type(pickle.dumps({‘fan‘:123,‘jie‘:321}))) #序列化 # print(type(pickle.loads(pickle.dumps(‘{"fan":123,"jie":321}‘)))) #反序列化
shelve:
# import shelve # with shelve.open(‘a2‘)as f: # f[‘k1‘]={"fan":123,"jie":321} 直接对文件句柄操作,就可以存入数据 # f[‘k2‘] = {"fang": 1234, "jie": 3210} 直接对文件句柄操作,就可以存入数据 # f1=f[‘k2‘] #取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错 # print(f1) # print(f[‘k1‘]) #取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错