5-1 模块
一 collections模块
1 orderedDict 有序字典
1 # d = collections.OrderedDict() 2 # 3 # d['苹果'] = 10 4 # d['手机']=5000 5 # print(d) 6 # for i in d: 7 # print(i,d[i])
2 defaultdict 默认字典
例子:小于66的放到k2,大于66的放到k1,形成一个新字典
l= [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
1 # new_dict = defaultdict(list) 2 # for value in l: 3 # if value > 66: 4 # new_dict['k1'].append(value) 5 # else: 6 # new_dict['k2'].append(value) 7 # print(new_dict)
3 namedtuple 生成可以使用名字来访问元素内容的tuple
1 # from collections import namedtuple 2 # Point = namedtuple('point',['x','y']) 3 # p=Point(1,2) 4 # print(p.x) 5 # print(p.y)
4 deque双端队列
1 # from collections import deque 2 # q=deque() 3 # print(q) 4 # q.append(1) 5 # q.append(2) 6 # print(q) 7 # q.pop() 8 # print(q) 9 # q.appendleft('a')左添加 10 # q.appendleft('b') 11 # print(q) 12 # q.popleft()左删除 13 # print(q)
二time模块
1三种时间格式
1 import time 2 print(time.time()) ##时间戳时间 3 print(time.strftime('%Y-%m-%d %H:%M:%S'))##字符串时间 4 print(time.localtime()) ##结构化时间
2 时间转换
1 时间戳---> 结构化时间-->字符串时间 2 # print(time.localtime(1600000000)) ##时间戳转换成结构化时间 3 # struct_time=time.gmtime(1600000000) ##结构化 4 # print(time.strftime('%Y-%m-%d %H:%M:%S',struct_time))##结构化转换成字符串 5 6 结果是time.struct_time(tm_year=2020, tm_mon=9, tm_mday=13, tm_hour=20, tm_min=26, tm_sec=40, tm_wday=6, tm_yday=257, tm_isdst=0) 7 2020-09-13 12:26:40 8 9 字符串时间-->结构化时间-->时间戳时间 10 11 12 # s = '2015-12-3 8:30:20' 13 # ret = time.strptime(s,'%Y-%m-%d %H:%M:%S') ##字符串转换成结构化 14 # print(ret) 15 # print(time.mktime(ret)) ##结构化转换成时间戳 16 17 结果是: 18 time.struct_time(tm_year=2015, tm_mon=12, tm_mday=3, tm_hour=8, tm_min=30, tm_sec=20, tm_wday=3, tm_yday=337, tm_isdst=-1) 19 1449102620.0
3 计算时间差
1 ##计算现在的时间到1991相差了多少 2 ago_time='1991-1-3' 3 now_time=time.localtime() 4 current_time=time.strptime(ago_time,'%Y-%m-%d') 8 print('过去了%d年%d月%d天' 9 %(now_time.tm_year-current_time.tm_year,now_time.tm_mon-current_time.tm_mon,now_time.tm_mday-current_time.tm_mday))
三random模块 (可以用于随机生成可用于验证码)
1
1 import random 2 # print(random.random()) ##是介于0和1之间的小数 3 # print(random.uniform(1,4)) ##介于1和4之间的的小数 4 # print(random.randint(1,5)) ##介于1和5之间的随机整数
2例子随机生成一个验证码
1 #(65,90)A-Z (97,122)a-z 2 import random 3 yanzheng='' 4 for i in range(6):##6位验证码 5 num1=random.randint(65,90)##大写字母 6 alpha1=chr(num1) 7 num2=random.randint(97,122) ##小写字母 8 alpha2=chr(num2) 9 num3=str(random.randint(0,9))##数字 10 #print(alpha1,alpha2,num3) 11 s=random.choice([alpha1,alpha2,num3]) 12 yanzheng+=s 13 print(yanzheng)
四 sys模块 (sys模块是与python解释器交互的一个接口)
1 import sys 2 #sys.exit() ##解释器退出,程序结束 3 # print(sys.path) #一个模块是否能够被导入 全看在不在sys.path列表所包含的路径下 4 # print(sys.modules) ## 放了所有在解释器运行的过程中导入的模块名 5 # print(sys.argv) ##返回['D:/python21/day5/模块.py'] 6 7 8 下面是一个传参数的例子 9 10 if sys.argv[1]=='hu' and sys.argv[2]=='123': 11 print('登录成功') 12 else: 13 sys.exit() 14 ##注意,不能在pycharm里面直接执行,应该是D:\python21\day5\模块.py这种执行方式
五 os模块
1
1 import os 2 # print(os.getcwdb())#获取当前目录 3 # os.chdir('C:\python21') #更改目录 4 # print(os.getcwdb()) 5 6 7 print(os.name) #输出字符串指示当前使用平台。win->'nt'; Linux->'posix' 8 #print(os.makedirs(r'c:/a/b')) ##创建多级目录 9 #os.removedirs(r'c:/a/b')# 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 10 #print(os.listdir(r'c:\python21')) ##列出当前目录所有的文件和目录,以列表形式打印 11 # print(os.environ) ##获取系统环境变量 12 13 #os.system("dir") ##运行shell命令,直接显示,不用打印 14 # ret = os.popen("dir").read() ##运行shell命令,获取执行结果,需要打印 15 # print(ret)
2 os.path
1 # print(os.path.abspath(r'模块.py')) ##获取绝对路径 2 # #结果C:\python21\day5\模块.py 3 # print(os.path.dirname('C:\python21\day5\模块.py')) ##获取上一级目录 4 # #结果C:\python21\day5 5 # print(os.path.split('C:\python21\day5\模块.py'))#将path分割成目录和文件名二元组返回 6 # #结果('C:\\python21\\day5', '模块.py') 7 # print(os.path.basename('C:\python21\day5\模块.py')) ##只获取到文件名 8 #结果:模块.py 9 # print(os.path.exists('C:\python21\day5\模块.py'))##判断路径是否存在,存在返回true 10 # print(os.path.isabs(r'模块.py')) ##判断是否是绝对路径,是返回true 11 # print(os.path.isfile('C:\python21\day5')) ##判断是否是文件,是返回true 12 # print(os.path.isdir('C:\python21\day5')) ##判断是否是目录,是返回true 13 # print(os.path.join('c:','python21'))##将多个路径组合后返回 14 # print(os.path.getatime('C:\python21\day5')) #获取文件目录最后访问时间 15 # print(os.path.getmtime('C:\python21\day5')) #获取文件目录最后修改时间 16 # print(os.path.getsize(r'C:\python21\day5\模块.py'))#获取文件大小 17 # print(os.path.getsize(r'C:\python21\day4'))#获取目录大小
3 例子计算目录下文件的大小
第一种情况,计算的目录不在当前目录
1 # dirs = "C:\python21\day4" 2 # sum=0 3 # C:\python21\day4\ceshi.py 4 # for path in ret: 5 # if os.path.isfile(os.path.join(dirs, path)): 6 # sum+=os.path.getsize(os.path.join(dirs,path)) 7 # print(sum)
第二种情况,计算当前目录文件大小
1 # ret = os.listdir(r'C:\python21\day5') 2 # for path in ret: 3 # if os.path.isfile(path): 4 # sum+=os.path.getsize(path) 5 # print(sum)
第三中情况,计算文件夹下的文件夹及其文件大小
1 sum=0 2 def func(dirs): # 'C:\python21\day5' ##默认是字符串 3 global sum 4 for file in os.listdir(dirs):##列出dirs目录下面所有的文件及其目录 5 if os.path.isdir(os.path.join(dirs,file)): 6 7 func(os.path.join(dirs,file))##如果是文件夹则继续执行函数func 8 else: 9 print("%s:%s" % (file,os.path.getsize(os.path.join(dirs,file)))) 10 sum+=os.path.getsize(os.path.join(dirs,file)) 11 return sum 12 print(func(r'C:\python21\day5'))
# dirs 是 C:\python21\day5\a
# file是 目录下面的文件 C:\python21\day5\a\b.txt