python--(内置模块)

python--(内置模块)

一.模块的简单认识:

  什么是模块,模块就是我们把装有特有功能的代码进行归类的结果,从代码编写的单位来看我们的程序,从小到大的顺序:一条代码<语句块<代码块(函数,类)<模块.我们目前写的所有的py文件都是模块.

  引入模块的方式:

    1,import模块

    2,forom xxx import模块

二.collections模块

  1,Counter是一个计数器.主要用来计数

    计算一个字符串中每个字符出现的次数:

1 from collections import Counter #引入模块,计数器
2     # c = Counter #创建起来和字典差不多
3 list = ["周杰伦", '周杰伦', "孔辉", "大阳哥", "大阳哥", "刘伟", "刘伟"]
4 c = Counter(list) #建一个counter对象
5 print(c)
6 print(c["孔辉"])
counter

    

 2.deque双向队列.
""" 1. 栈: FILO. 先进后出 -> 砌墙的砖头, 老师傅做馒头
2. 队列: FIFO. 先进先出 -> 买火⻋票排队 所有排队的场景
"""
 1 from collections import deque
 2 d = deque() #创建双向队列
 3 d.append("李茶的姑妈") # 默认在右侧添加
 4 d.append("无双")
 5 d.append("")
 6 d.append("找到你")
 7 #让悲伤逆流成河, 理查的姑妈, 无双, 影, 找到你
 8 print(d)
 9 d.appendleft("让悲伤逆流成河") # 左侧添加
10 print(d)
11 
12 
13 print(d.pop()) # 从右边删除
14 print(d.pop()) # 从右边删除
15 print(d.popleft()) # 从左边删除
16 print(d.pop()) # 从右边删除
17 print(d)
deque双向队列
 1 # 队列: 先进先出.  First In First Out FIFO
 2 # 栈: 先进后出. First In Last Out FILO
 3 import queue
 4 # q = queue.Queue() # 创建队列
 5 # q.put("刘伟") # 放入元素
 6 # q.put("大阳哥")
 7 # q.put("吴佩琪")
 8 #
 9 # print(q.get())  # 获取元素
10 # print(q.get())
11 # print(q.get())
12 # print(q.get()) # 阻塞了. 在等下一个元素, input()
13 
14 # 装馒头的桶
15 # 1. 入栈
16 # 2. 出栈
17 # 属性:   1. 列表(容器) 2.大小(size) 3. 栈顶指针(下一个装元素的位置)
18 class StackFullError(Exception):
19     pass
20 class StackEmptyError(Exception):
21     pass
22 class Stack:
23     def __init__(self, size):
24         self.index = 0  #  栈顶指针
25         self.size = size
26         self.lst = []  # 容器
27 
28     def push(self, el):
29         if self.index < self.size:  #  还没有装满
30             self.lst.insert(self.index, el)
31             self.index += 1
32         else:   # 装满了
33             raise StackFullError("the stack is full!")
34 
35     def pop(self):
36         if self.index > 0:
37             self.index -= 1
38             return self.lst[self.index]
39         else:
40             raise StackEmptyError("the stack is empty!")
41 
42 # 使用
43 # 1.实例化栈
44 s = Stack(5)
45 s.push("馒头1")
46 print(s.pop())
47 s.push("馒头2")
48 print(s.pop())
49 s.push("馒头3")
50 print(s.pop())
51 s.push("馒头4")
52 print(s.pop())
53 s.push("馒头5")
54 print(s.pop())
55 s.push("馒头6")
56 print(s.pop())
栈和队列


 3. namedtuple 命名元组
命名元组, 顾名思义. 给元组内的元素进⾏命名. 比如. 我们说(x, y) 这是一个元组. 同
时. 我们还可以认为这是一个点坐标. 这时, 我们就可以使用namedtuple对元素进命名
1 from collections import namedtuple
2 #自己定义一个元祖,如果灵活性好,这就是创建了一个类
3 nt = namedtuple("point",["x","y"])
4 p = nt(1,2)
5 print(p)
6 
7 print(p.x)
8 print(p.y)
namedtuple 命名元祖

  

 4.orderdict和defaultdict
orderdict顾名思义.字典的key默认是无序的.而OrderedDict是有序的
1 dic = {"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"}
2 print(dic)
3 
4 from collections import OrderedDict
5 od = OrderedDict({"a":"娃哈哈","b":"百事可乐","c":"阿萨姆"})
6 print(od)
orderdict

  

   defaultdict:可以给字典设置默认值.直接获取默认值:
1 from collections import defaultdict
2 d = defaultdict(list) # {} list() 必须是callable
3 d['刘伟'] = "奥特曼"
4 print(d['孔辉']) # 当key不存在的时候. 返回默认值.其实就是callable()
5 print(d['刘伟'])
defaultdict
三.time时间模块(重点)
    

    1. 时间戳(timestamp). 时间戳使⽤的是从1970年01月01日 00点00分00秒到现在
    一共经过了多少秒... 使用float来表示
    2. 格式化时间(strftime). 这个时间可以根据我们的需要对时间进⾏任意的格式化.
    3. 结构化时间(struct_time). 这个时间主要可以把时间进⾏分类划分. 比如. 1970
    年01月01日00点00分00秒 这个时间可以被细分为年 ,月,日...一堆东西

 1 import time
 2 print(time.time()) #时间戳,给机器用的
 3 print(time.strftime("%Y/%m/%d %H:%M:%S")) #格式化时间给人看的
 4 print(time.localtime()) #结构化时间,用来计算的
 5 
 6 # 时间戳 -> 格式化时间 or 结构化
 7 import time
 8 
 9 t = time.localtime(1888888888) # 结构化时间
10 print(t)
11 s = time.strftime("%Y-%m-%d %H:%M:%S", t) # 格式化这个时间
12 print(s)

    日期化的标准:

 1 %y 两位数的年份表示(00-99 2 %Y 四位数的年份表示(000-9999 3 %m ⽉份(01-12 4 %d ⽉内中的⼀天(0-31 5 %H 24⼩时制⼩时数(0-23 6 %I 12⼩时制⼩时数(01-12 7 %M 分钟数(00=59 8 %S 秒(00-59 9 %a 本地简化星期名称
10 %A 本地完整星期
11 %b 本地简化的⽉份名称
12 %B 本地完整的⽉份名称
13 %c 本地相应的⽇期表示和时间表示
14 %j 年内的⼀天(001-36615 %p 本地A.M.或P.M.的等价符
16 %U ⼀年中的星期数(00-53)星期天为星期的开始
17 %w 星期(0-6),星期天为星期的开始
18 %W ⼀年中的星期数(00-53)星期⼀为星期的开始
19 %x 本地相应的⽇期表示
20 %X 本地相应的时间表示
21 %Z 当前时区的名称
22 %% %号本身

计算时间差

1 import time
2 true_time = time.mktime(time.strptime("2017-09-11 08:30:00","%Y-%m-%d %H:%M:%S"))
3 time_now=time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
4 dif_time=time_now-true_time
5 struct_time=time.localtime(dif_time)
6 print(struct_time)
7 print('过去了%d年%d⽉%d天%d⼩时%d分钟%d秒'%(struct_time.tm_year-
8 1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,
9 struct_time.tm_min,struct_time.tm_sec))
代码
四.random模块
所有关于随机的内容都在random模块中.
 1 import random
 2 
 3 print(random.random())  #0-1小数
 4 print(random.uniform(3,10)) #3-10小数
 5 
 6 print(random.randint(1,10)) #1-10整数
 7 print(random.randrange(1,10,2)) #1-10奇数
 8 
 9 print(random.choice([1,"周杰伦",["盖伦","胡辣汤"]])) # 列表中任意一个数
10 print(random.sample([1,"23",[4,5]],2)) #1或者23或者[4,5])
11 
12 lst = [1,2,3,4,5,6,7,8]
13 random.shuffle(lst)  #随机打乱顺序
14 print(lst)
random
 
 

五.os模块

  所有和操作系统相关的内容都在os模块

 1 os.makedirs('dirname1/dirname2') 可生成多层递归目录
 2 os.removedirs('dirname1') 若⽬录为空,则删除,并递归到上一级目录,如若也为空,则删
 3 除,依此类推
 4 os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
 5 os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中
 6 rmdir dirname
 7 os.listdir('dirname') 列出指定目录下的所有文件子目录,包括隐藏文件,并以列表方式
 8 打印
 9 os.remove() 删除一个文件
10 os.rename("oldname","newname") 重命名文件/目录
11 os.stat('path/filename') 获取文件/目录信息
12 os.system("bash command") 运行shell命令,直接显示
13 os.popen("bash command).read() 运行shell命令,获取执行结果
14 os.getcwd() 获取当前⼯作⽬录,即当前python脚本⼯作的⽬录路径
15 os.chdir("dirname") 改变当前脚本⼯作⽬录;相当于shell下cd
16 # os.path
17 os.path.abspath(path) 返回path规范化的绝对路径
18 os.path.split(path) 将path分割成⽬录和⽂件名⼆元组返回
19 os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
20 os.path.basename(path) 返回path最后的⽂件名。如何path以/或\结尾,那么就会返回空值。
21 即os.path.split(path)的第二个元素
22 os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
23 os.path.isabs(path) 如果path是绝对路径,返回True
24 os.path.isfile(path) 如果path是⼀个存在的⽂件,返回True。否则返回False
25 os.path.isdir(path) 如果path是⼀个存在的⽬录,则返回True。否则返回False
26 os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第⼀个绝对路径之前的参将被忽略
27 os.path.getatime(path) 返回path所指向的⽂件或者⽬录的最后访问时间
28 os.path.getmtime(path) 返回path所指向的⽂件或者⽬录的最后修改时间
29 os.path.getsize(path) 返回path的⼤⼩
30 # 特殊属性:
31 os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
32 os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n"
33 os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
34 osname 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'
os模块相关

  

os.stat()属性解读: 

 1 stat 结构:
 2 st_mode: inode 保护模式
 3 st_ino: inode 节点号。
 4 st_dev: inode 驻留的设备
 5 st_nlink: inode 的链接数。
 6 st_uid: 所有者的⽤户ID。
 7 st_gid: 所有者的组ID。
 8 st_size: 普通⽂件以字节为单位的⼤⼩;包含等待某些特殊⽂件的数据。
 9 st_atime: 上次访问的时间。
10 st_mtime: 最后⼀次修改的时间。
11 st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,在
12 其它系统上(如Windows)是创建时间(详细信息参⻅平台的⽂档)。
os.stat()

六.sys模块

  所有和python解释器相关的都在sys模块中.

1 sys.argv 命令⾏参数List,第⼀个元素是程序本身路径
2 sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
3 sys.version 获取Python解释程序的版本信息
4 sys.path 返回模块的搜索路径,初始化时使⽤PYTHONPATH环境变量的值
5 sys.platform 返回操作系统平台
sys模块



 
 

  

猜你喜欢

转载自www.cnblogs.com/konghui/p/9756861.html