一.random(取随机数)模块

1.随机小数
  • random.random() # 取0-1之间的随机小数
  • random.uniform(m,n) # 取m-n之间的随机小数
2.取随机整数
  • random.randint(m,n) # 取m-n之间的随机整数 [m,n]
  • random.randrange(m,n) #取m-n之间不包含n的随机整数 [m,n)
  • random.randrange(m,n,i) # 在m-n之间,按i的步长取随机整数,例如random.randrange(1,10,2),取1-10之间的随机奇数.
3.取随机元素
  • random.choice(序列) # 返回一个序列(列表,元组或字符串中的)随机项。
  • random.sample(序列,n) #从指定的序列中,随机的截取n个元素或n长度的片断,返回一个新的序列。
4.打乱顺序
  • random.shuffle(l) # 打乱序列的顺序.

二.time时间模块(重点)

time模块主要用于和时间相关的操作上

1.时间戳(timestamp)

时间戳是从1970-1-1 00:00:00到现在一共过了多少秒.

2.格式化时间(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 当前时区的名称
  • %% %号本身
3.结构化时间(struct_time)

主要把时间进行分类划分.

import time

s= time.time() # 获取当前时间的时间戳
strc_time = time.localtime(s) #将时间戳转换成结构化时间
print(strc_time)
#time.struct_time(tm_year=2022, tm_mon=11, tm_mday=17, tm_hour=14, tm_min=54,
tm_sec=5, tm_wday=3, tm_yday=321, tm_isdst=0)
4.时间的相互转换
4.1 时间戳-结构化时间-格式化时间
import time # 导入时间模块
ts = time.time() # 获取当前时间的时间戳
sct = time.localtime(ts) # 将时间戳转换成结构化时间
sft = time.strftime('%Y-%m-%d %H:%M:%S',sct) # 将结构化时间转换成格式化时间
print(sft) # 2022-11-17 15:04:37
4.2 格式化时间-结构化时间-时间戳
import time # 导入时间模块
sft = '2022-11-17 15:04:37'
sct = time.strptime(sft,'%Y-%m-%d %H:%M:%S') # 将格式化时间转换成结构化时间
ts = time.mktime(sct) # 将结构化时间转换成时间戳
print(ts) # 1668668677.0
4.3计算时间差
import time # 导入时间模块
true_time=time.mktime(time.strptime('2022-11-16 08:30:00','%Y-%m-%d %H:%M:%S'))
time_now=time.mktime(time.strptime('2022-11-17 11:00:00','%Y-%m-%d %H:%M:%S'))
dif_time=time_now-true_time
struct_time=time.localtime(dif_time)
print(struct_time)
print('过去了%d年%d⽉%d天%d⼩时%d分钟%d秒'%(struct_time.tm_year-
1970,struct_time.tm_mon-1,struct_time.tm_mday-1,struct_time.tm_hour,struct_time.tm_min,struct_time.tm_sec))

三.os模块

os模块是和操作系统交换的模块

  1. os.mkdir('dirname') #生成单级目录,相当于shell中mkdir dirname
  2. os.rmkdir('dirname') # 删除单级空目录,如果目录不为空则无法删除,会报错;相当于shell中rmdir dirname
  3. os.makedirs('dirname1/dirname2') # 生成多层递归目录
  4. os.removedirs('dirname1') # 若目录为空,则删除,并递归到上一级目录,若也为空,则删除,以此类推.(慎重使用)
  5. os.remove() # 删除一个文件.
  6. os.rename('oldname','newname') # 重命名
  7. os.stat('path/filename') # 获取文件/目录信息
  8. os,listdir('dirname') # 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印.
  9. os.system('bash command') # 运行shell命令,直接显示
  10. os.popen('bash command').read() # 运行shell命令,获取执行结果,适合做查看类的操作
  11. os.getcwd() # 获取当前工作目录,即当前python脚本工作的目录路径

#os.path

  1. os.path.abspath(path) 返回path规范化的绝对路径
  2. os.path.split(path) 将path分割成⽬录和⽂件名⼆元组返回
  3. os.path.dirname(path) 返回path的⽬录。其实就是os.path.split(path)的第⼀个元素
  4. os.path.basename(path) 返回path最后的⽂件名。如果path以/或\结尾,那么就会返回空值。 即os.path.split(path)的第⼆个元素
  5. os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
  6. os.path.isabs(path) 如果path是绝对路径,返回True
  7. os.path.isfile(path) 如果path是⼀个存在的⽂件,返回True。否则返回False
  8. os.path.isdir(path) 如果path是⼀个存在的⽬录,则返回True。否则返回False
  9. os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第⼀个绝对路径之前的参数
  10. 将被忽略
  11. os.path.getatime(path) 返回path所指向的⽂件或者⽬录的最后访问时间
  12. os.path.getmtime(path) 返回path所指向的⽂件或者⽬录的最后修改时间
  13. os.path.getsize(path) 返回path的⼤⼩

# 特殊属性:

  1. os.sep 输出操作系统特定的路径分隔符,win下为"\\",Linux下为"/"
  2. os.linesep 输出当前平台使⽤的⾏终⽌符,win下为"\r\n",Linux下为"\n"
  3. os.pathsep 输出⽤于分割⽂件路径的字符串 win下为;,Linux下为:
  4. os.name 输出字符串指示当前使⽤平台。win->'nt'; Linux->'posix'

四.sys模块

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

五.collections(收集)模块

collections模块主要封装了一些关于集合类的相关操作,比如lterable lterator等,除此之外,collections还提供了除基本数据类型以外的数据集合类型.

1.Counter

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

例如:计算字符串中每个字母出现的次数:

import collections
s = 'abbcccdddd'
ret = collections.Counter(s)
print(ret) # Counter({'d': 4, 'c': 3, 'b': 2, 'a': 1})
2.deque 队列(重点)

扩展知识:

  • 栈: FILO,先进后出,
  • 队列:FIFO,先进先出,例如:小朋友玩滑梯.

队列:python提供了queue模块.如果队列里没有元素了,就拿不出来了,此时程序会阻塞.

import queue
q = queue.Queue()
q.put("刘德华") # 存内容
q.put("张学友")
q.put("郭富城")
print(q)
print(q.get()) # 拿内容 刘德华
print(q.get()) # 张学友
print(q.get()) # 郭富城

而deque是Python标准库 collections 中的一个类,左右两侧都可以操作的队列,与Python的基本数据类型列表类似。

from collections import deque
q = deque()
q.append("冯绍峰") # 右侧添加
q.append("赵丽颖")
q.appendleft("赵⼜廷") # 左侧添加
q.appendleft("⾼圆圆")
print(q)
print(q.pop()) # 右侧删除
print(q.popleft()) # 左侧删除
3.namedtuplue 命名元组

命名元组就是给元组内的元素进行命名.例如:(x,y)这个元组,可以任务是一个坐标点,这时就可以使用namedtuple对元素进行命名.

from collections import namedtuple
# ⾃⼰定义了⼀个元组, , 可以认为这其实就是创建了⼀个类
nt = namedtuple("point", ["x", "y"])
p = nt(1, 2)
print(p)
print(p.x)
print(p.y)
4.Orderdict和defaultdict
  • Orderdict有序字典:字典默认是无序的,而Orderdict是有序的.
  • defaultdict可以给字典设置默认值,当key不存在时,直接获取默认值.
from collections import defaultdict
dic = defaultdict(list) # 默认值list
print(dic['a']) # [] 当key不存在的时候. 会⾃动执⾏构造⽅法中传递的内容.