python常用模块
1.collections模块
在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
1.namedtuple:生成可以使用名字来访问元素内容的tuple。
2.deque:双端队列,可以快速的从另一侧追加和推出对象。
3.Counter:计数器,主要用来计数。
4.OrderedDict:有序字典。
5.defaultdict:带有默认值的字典。
1.namedtuple
from collections import namedtuple a = namedtuple('point', ['x', 'y']) p = a(1, 2) print(p.x) print(p.y) print(p)

2.deque
使用list存储时,按索引访问元素很快,但是插入和删除元素就很慢,因为list是线性存储,数据量大的时候,插入和删除效率很低。deque是为了高效实现插入和删除操作的双向列表,适合队列和栈:
from collections import deque dq = deque([1, 2]) dq.append('a') dq.appendleft('b') dq.insert(2, 3) print(dq.pop()) print(dq.pop()) print(dq.popleft())# 可以非常高效地往头部添加或删除元素

3.Counter
Counter类的目的是用来跟踪值出现的次数。
>>> from collections import Counter >>> c = Counter('asdwudasddezcc') >>> print(c) Counter({'d': 4, 'a': 2, 's': 2, 'c': 2, 'w': 1, 'u': 1, 'e': 1, 'z': 1})
4.OrderedDict
注意:OrderedDict的key会按照插入的顺序排列,不是key本身排序;
>>> from collections import OrderedDict >>> od = OrderedDict() >>> od['z'] = 1 >>> od['y'] = 2 >>> od['x'] = 3 >>> od.keys() odict_keys(['z', 'y', 'x'])
5.defaultdict
实例:现有如下列表[11,22,33,44,55,66,77,88,99,90],将所有大于66的值保存字典的第一个key中,将小于66的值保存在第二个key值中。
from collections import defaultdict values = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90] my_dict = defaultdict(list) for value in values: if value > 66: my_dict['k1'].append(value) else: my_dict['k2'].append(value) print(my_dict)

2.时间模块
在python中,通常有这三种方式来表示时间:时间戳、元组、格式化的时间字符串。
时间戳:time.time()
格式化的时间字符串:
%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 当前时区的名称 %% %号本身
元组:
|
索引 |
属性 | 值 |
|
0 |
tm_year(年) | 比如2011 |
| 1 | tm_mon(月) |
1-12 |
| 2 | tm_mday(日) |
1-31 |
| 3 |
tm_hour(时) |
0-23 |
| 4 | tm_min(分) |
0-59 |
|
5 |
tm_sec(秒) | 0-60 |
| 6 |
tm_wday(weekday) |
0-6(0表示周一) |
| 7 |
tm_yday(一年中的第几天) |
1-366 |
| 8 | tm_isdst(是否是夏令时) |
默认0 |
实例:
import time print(time.time()) print(time.strftime("%Y-%m-%d %H:%M:%S"))# 年月日时分秒

3.random模块
>>> import random
# 生成随机小数 >>> random.random() #大于0且小于1之间的小数 0.45641118106952105 >>> random.uniform(1,3) #大于1且小于3之间的小数 2.2812412024782334 #生成随机整数 >>> random.randint(1,5) 2 >>> random.randrange(1,10,2)# 1-10之间的奇数 7 # 随机选择一个返回 >>> random.choice([1,'23',[4,5]]) 1 >>> random.sample([1,'23',[4,5]],2) [[4, 5], 1] # 打乱列表顺序 >>> a = [1,3,5,6,7,8] >>> random.shuffle(a) >>> a [3, 7, 1, 5, 8, 6]
实例:生成随机验证码。
import random def func(): code = '' for i in range(5): num = random.randint(0, 9) alf = chr(random.randint(65, 90)) add = random.choice([num, alf]) code = "".join([code, str(add)]) return code print(func())
4.os模块
os模块是与操作系统交互的一个接口。
命令与参数:
os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印 os.remove() 删除一个文件 os.rename("oldname","newname") 重命名文件/目录 os.stat('path/filename') 获取文件/目录信息 os.system("bash command") 运行shell命令,直接显示 os.popen("bash command).read() 运行shell命令,获取执行结果 os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd os.path 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.isabs(path) 如果path是绝对路径,返回True os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略 os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间 os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间 os.path.getsize(path) 返回path的大小
5.sys模块
sys模块是与python解释器交互的一个接口。
sys.argv # 命令行参数List,第一个元素是程序本身路径 sys.exit(n) # 退出程序,正常退出时exit(0),错误退出时exit(1) sys.version # 获取python解释器程序版本信息 sys.path # 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform # 返回操作系统平台名称
异常处理:
try: s = int(input('number>>>')) print(s * '*') except ValueError: print('你输入的内容有误,请输入一个数字') else: print('/\/\/\/') finally: print('.......')

6.序列化模块
将原本的字典、列表等内容转换成一个字符串的过程叫做序列化。
1).json ---- 通用的序列化格式;但是只有少部分数据类型能够通过json转化成字符串。--数字、字符串、列表、字典、元组。
json模块提供了四个功能:dumps、dump、loads、load
# json dumps序列化方法 loads反序列化方法 import json dic = (1, 2, 3, 4) print(type(dic), dic) sd = json.dumps(dic) print(type(sd), sd) dd = json.loads(sd) print(type(dd), dd)

# json ---- dump load import json dic = {1: "a", 2: "b"} f = open('asd', 'w', encoding='utf-8') json.dump(dic, f) # dump方法接收一个文件句柄,直接将字典转换成json字符串写入文件。 f.close() f = open('asd') a = json.load(f) # load方法接收一个文件句柄,直接将文件的json字符串转换成数据结构返回。 f.close() print(type(a), a)
2).pickle ---- 所有的python中的数据类型都可以转化成字符串形式;序列化的内容只有python能理解且部分反序列化依赖python代码。
import pickle dic = {'a': '1', 'b': '2', 'c': '3'} str_dic = pickle.dumps(dic) print(str_dic) #返回的是一串二进制
dic2 = pickle.loads(str_dic)
print(dic2) # 返回字典
浙公网安备 33010602011771号