常用模块
collections模块
- 在内置数据类型(dict、list、set、tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter、deque、defaultdict、namedtuple和OrderedDict等。
- namedtuple: 生成可以使用名字来访问元素内容的tuple
- deque: 双端队列,可以快速的从另外一侧追加和推出对象
- Counter: 计数器,主要用来计数
- OrderedDict: 有序字典
- defaultdict: 带有默认值的字典
namedtuple
-
生成可以使用名字来访问元素内容的tuple
from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(2, 3) print(p.x) print(p.y) print(p[0]) print(p[1]) #结果 2 3 2 3
deque
堆栈和队列了解
- 堆栈
- 先进后出
- 队列
-
先进先出
import queue q = queue.Queue() q.put(9) #放进去9 q.put(10) #放进去10 q.put(11) #放进去11 q.get() #取出9 q.get() #取出10 q.get() #取出11 q.get() #队列阻塞
-
双端队列
-
双端队列,可以快速的从另外一侧追加和推出对象
-
deque是为了高效实现插入和删除操作的双向列表,适合用于队列和栈
from collections import deque q = deque(['a', 'b', 'c']) q.append('e') #在列表的后方添加'e' q.appendleft('1') #在列表的左边添加'1' q.pop() #从列表的后方拿出'e' q.popleft() #从列表的前方拿出'1' q.insert(2, 'f') #向列表 index=2 处插入'f'
OrderedDict
-
有序字典
from collections import OrderedDict # 创建一个无序的字典 ## 常规方法 dic1 = {'k1':'value1', 'k2':'value2', 'k3':'value3'} ## 另外一种方法 dic2 = dict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')]) # 创建有序字典 -创建的字典会保持创建时key的顺序排列 dic3 = OrderedDict([('k1', 'v1'), ('k2', 'v2'), ('k3', 'v3')])
defaultdict
-
带有默认值的字典
from cellections import defaultdict #创建一个没有默认值的空字典 dic1 = {} #尝试调用空字典不存在的key dic1['key'] #将会报错 #创建一个含有默认值的空字典 dic2 = defaultdict(list/set/dict/lambda : x) #传入的参数必须是可调用的,不能是字符串或者数字 dic2['key'] #key不存在,但会默认返回一个空列表
时间模块
- 和时间有关系的我们就要用到时间模块。在使用模块之前,应该首先导入这个模块。
常用方法
-
time.sleep(secs)
让线程休息secs秒 -
time.time()
获得时间戳- 给计算机看的时间float类型
- 时间戳表示的是从1970年1月1日08:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
-
time.strftime()
格式化的时间字符串%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 当前时区的名称 %% %号本身
-
格式化时间
#导入时间模块 import time time.strftime('%Y-%m-%d %H:%M:%S') #输出的结果 2018-10-01 12:30:00
-
-
time.localtime()
结构化时间-
元组,计算用的
-
调用元组中元素的名字获取元组中数据(联系可命名元组)
tm_yeat 年 tm_mon 月 tm_mday 日 tm_hour 小时 tm_min 分 tm_sec 秒 tm_wday 周几 tm_yday 一年中第几天 tm_isdst 是否是夏令时(默认否 tm_isdst=0)
-
时间类型间的转换
1. 时间戳<-->结构化时间<-->格式化字符串时间
-
时间戳<-->结构化时间
import time #时间戳-->结构化时间 t = time.time() time.localtime(t) #当地时间,参数t可以不传,默认打印当前时间的结构化时间 time.gmtime(t) #转换成伦敦时间 #结构化时间-->时间戳 t = time.localtime() #获取当前时间的结构化时间 time.mktime(t) #结果是个时间戳
-
格式化字符串时间<-->结构化时间
import time #格式化字符串时间-->结构化时间 time.strptime('2018-10.2', '%Y-%m.%d') #获得元组类型的格式化时间 #结构化时间-->格式化字符串时间 t1 = time.localtime() time.strftime('%Y/%m/%d %H:%M:$S', t1) #传入两个参数,格式和结构化时间
2. 格式化时间-->字符串结构化时间<--时间戳
-
格式化时间-->字符串结构化时间
import time t1 = time.localtime() time.asctime(t1) #得到格式化字符串时间,参数可以不传,默认参数time.time()
-
时间戳-->格式化字符串时间
import time t1 = time.time() time.ctime(t1) #得到格式化字符串时间,参数可以不传,默认参数time.time()
作业
- 计算2017-09-11 08:30:00和2017-09-12 11:00:00之间的时间差,差了年月日时分秒
random模块
random.random()
- 产生0-1之间的小数
random.randint(n, m)
- 产生(n, m]区间的整数
random.range(n, m, step)
- 产生(n, m)步长为step的随机整数
random.choise(['x', 'y', 'z'])
- 随机在'x', 'y', 'z'三个元素中返回一个元素
random.sample(['x', 'y', 'z'], n)
- 随机在'x', 'y', 'z'三个元素中返回n个元素
random.shuffe(item)
- 随机打乱次序
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的大小
sys模块
-
sys模块是与python解释器交互的一个接口
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) sys.version 获取Python解释程序的版本信息 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称