主要内容:
1模块的简单认识
2collection模块
3time时间模块
4random模块
5os模块
6sys模块
一 模块的简单认识
- 引入模块的方式:
1import (常见方式)
2 from xxx import
例子:
from collections import Iterable(可迭代的), Iterator(迭代器)
lst = [] print(isinstance(lst, Iterable)) # True print(isinstance(lst, Iterator)) # False
二 collection模块 (conllection模块主要封装了一些关于集合类的相关操作。比如 iterable,iterator等。除此之外 collections还提供了一些基本数据类型以外的数据集合类型。
例如:
- Counter
- deque
- Orderdict
- defaultdict
- namedtuple)
1.Counter(是一个计数器,主要用来激计数)
例如 计算一个字符串中某个字符出现的次数
# 传统 s='sjkdjajdaksj' dic={} for el in s: dic[el]=dic.get(el,0)+1 print(dic) #{'s': 2, 'j': 4, 'k': 2, 'd': 2, 'a': 2} # 牛逼的 from collections import Counter # 引入模块 s='sjkdjajdaksj' print( Counter(s)) #Counter({'j': 4, 's': 2, 'k': 2, 'd': 2, 'a': 2})
2. deque(双向队列)
说过这个之前先看看 什么是 :队列 (先进先出)first in first out fifo
栈 (先进后出) first in last out filo
# import queue # a=queue.Queue() # 创建队列 # a.put("里鱼") #放入元素 # a.put("声卡") # a.put('加快') # # print(a.get()) #里鱼 # 获取元素 # print(a.get()) # 声卡 # print(a.get()) #加快 # # print(a.get()) # 阻塞了在等下一个元素,和他一样的有 input() #装馒头的桶 #入栈 #出栈 #属性 1 列表(容器) 2大小 3 栈顶指针(下一个装元素的位置) class StackFullError(Exception): pass class StackEmptyError(Exception): pass class stack: def __init__(self,size): self.size=size self.index = 0 #栈顶指针 self.list=[]# 容器 def push(self,el):# 入栈 if self.index<self.size: #没装满 判断其是否到顶了 上限 self.list.insert(self.index,el) self.index+=1 else: # 装满了 抛个异常 raise StackFullError("the stack is full满了!") def pop(self):# 出栈 if self.index>0: # 不能低于下限 self.index-=1 return self.list[self.index] else: # 否则 抛个异常 说明这个 栈 是空的 raise StackEmptyError("the stack is empty空了!") #实例化栈 s=stack(6) s.push("1") s.push("2") s.push("3") s.push("4") s.push("5") s.push("6") print(s.pop()) #6 print(s.pop())# 5 print(s.pop())#4 print(s.pop())#3 print(s.pop())#2 print(s.pop())#1 #print(s.pop()) #"the stack is empty空了!"
接下来看queue (双向队列)
接下来看deque(双向队列) from collections import deque # 引入模块 q=deque ()# 创建双向列表 q.append("张开")#右侧添加 q.append("李二") q.appendleft("张三") # 左侧添加 q.appendleft("王麻子") # 左侧添加 print(q) #deque(['王麻子', '张三', '张开', '李二']) print(q.pop()) # 右侧删除 李二 print(q.popleft()) #左侧删除 王麻子-
3 namedtuple(命名元祖)
命名元组, 顾名思义. 给元组内的元素进⾏命名. 比如. 我们说(x, y) 这是⼀个元组. 同 时. 我们还可以认为这是⼀个点坐标. 这时, 我们就可以使⽤namedtuple对元素进⾏命名
from collections import namedtuple nt = namedtuple("point", ["x", "y"]) p = nt(1, 2) print(p) #point(x=1, y=2) print(p.x) #1 print(p.y) #2
4 orderdict和defaultdict (orderdict 顾名思义. 字典的key默认是⽆序的. ⽽OrderedDict是有序的)
# dic = {'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'} # print(dic) # from collections import OrderedDict # od = OrderedDict({'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'}) # print(od) # from collections import defaultdict # dd = defaultdict(list) # 默认值list # print(dd['娃哈哈']) # [] 当key不存在的时候. 会⾃动执⾏构造⽅法中传递的内容.
三 time 时间模快
import time print(time.time()) # 1538996895.8780088 系统时间 #此时, 我们已经获取到了系统时间, 但是这个时间....看不懂. 怎么办呢. 需要对时间进 #⾏格式化. 那这样就引出了另⼀种时间的格式. 在python中时间分成三种表现形式: #1. 时间戳(timestamp). 时间戳使⽤的是从1970年01⽉01⽇ 00点00分00秒到现在 #⼀共经过了多少秒... 使⽤float来表⽰ # #2. 格式化时间(strftime). 这个时间可以根据我们的需要对时间进⾏任意的格式化. # #3. 结构化时间(struct_time). 这个时间主要可以把时间进⾏分类划分. 比如. 1970 #年01⽉01⽇ 00点00分00秒 这个时间可以被细分为年, ⽉, ⽇.....⼀⼤堆东⻄. # 格式化时间 s=time.strftime("%Y-%m-%d %H:%M:%S") print(s) # ⽇期格式化的标准: # %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 当前时区的名称 # %% %号本身 #结构化时间 print(time.localtime()) # 用来计算的
时间的转换:
时间转换 # t = time.localtime(1888888888) # 结构化时间 # s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间 # print(s) # 用户输入时间 s = "2020-10-01 12:18:12" t = time.strptime(s, "%Y-%m-%d %H:%M:%S")# 转化成结构化时间 print(time.mktime(t)) # 转换成时间戳
计算时间差:
四 random模块
import random print(random.random()) # 0-1的小数 print(random.uniform(3,11)) # 3-11的小数 print(random.randint(3,11)) # 3-11的整数 print(random.randrange(3,11,2)) # 3-11的奇数 步长是2 print(random.choice([3,'周杰伦',["盖伦",'德玛西亚']])) # 随机选一个 print(random.sample([1, '23', [4, 5],'嘻哈'], 3)) # 列表元素任意2个组合 print(random.sample(list(range(1, 37)), 7)) # 36选7 lst = [1, 2, 3, 4, 5, 6, 7, 8] random.shuffle(lst) # 随机打乱顺序 print(lst)
五 os模块
import os # os.makedirs('a/b/c') #生成多层递归目录 # os.removedirs('a/b/c') # 若若⽬录为空,则删除,并递归到上⼀级⽬录,如若也为空,则删除,依此类推 # 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.chdir("dirname")# 改变当前脚本⼯作⽬录;相当于shell下cd os.getcwd() #获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径 ## 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的⼤⼩ # # 特殊属性: # os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/" # os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n" # os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为: # os.name 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
os.stat() 属性解读
### # stat 结构: # st_mode: inode 保护模式 # st_ino: inode 节点号。 # st_dev: inode 驻留的设备。 # st_nlink: inode 的链接数。 # st_uid: 所有者的⽤户ID。 # st_gid: 所有者的组ID。 # st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。 # st_atime: 上次访问的时间。 # st_mtime: 最后⼀次修改的时间。 # st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在 # 其它系统上(如Windows)是创建时间(详细信息参⻅平台的⽂档)。
六 sys模块
所有和python解释器相关的都在sys模块. # sys.argv 命令⾏参数List,第⼀个元素是程序本身路径 # sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1) # sys.version 获取Python解释程序的版本信息 # sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值 # sys.platform 返回操作系统平台名称