Python常用内置模块详解(collections/time/random/os/sys)
摘要
本文系统讲解 Python 内置五大高频模块:模块基础概念、collections 集合扩展模块、time 时间处理模块、random 随机模块、os 操作系统交互模块、sys 解释器模块,附带可运行示例代码、参数说明表格,是 Python 日常开发高频工具库,适合新手收藏查阅,所有代码可直接复制运行。
一、模块基础认识
1. 什么是模块
代码层级从小到大:单行代码 < 代码语句块 < 函数 / 类(代码块)< 模块 .py结尾的 Python 文件就是一个模块,分为:
-
内置模块:Python 自带,无需安装(collections、time、random、os、sys 等)
-
第三方模块:需要通过 pip 额外安装
2. 模块导入两种语法
# 方式1:导入整个模块 import 模块名 # 方式2:从模块导入指定功能 from 模块名 import 功能1,功能2
二、collections 模块(扩展集合工具)
补充 Python 基础数据类型之外的集合工具类,常用:
Counter/deque/namedtuple/OrderedDict/defaultdict
| 工具类 | 作用 |
|---|---|
| Counter | 计数器,快速统计元素出现次数 |
| deque | 双向队列,两端高效增删数据 |
| namedtuple | 命名元组,给元组字段命名 |
| OrderedDict | 有序字典(Python3.7 + 字典默认有序,低版本专用) |
| defaultdict | 默认值字典,key 不存在不报错 |
2.1 Counter 计数器
from collections import Counter s = "alex like pig" # 统计每个字符出现次数 res = Counter(s) print(res) # 像字典一样取值 print(res['l'])
2.2 deque 双向队列
前置概念:
-
栈:先进后出(FILO)
-
队列:先进先出(FIFO)
from collections import deque
# 创建空双向队列
q = deque()
# 右侧追加
q.append("张开")
q.append("包贝尔")
# 左侧插入
q.appendleft("赵又廷")
q.appendleft("还我高圆圆")
print(q)
# 右侧弹出
print(q.pop())
# 左侧弹出
print(q.popleft())
2.3 namedtuple 命名元组
from collections import namedtuple
# 定义坐标类型:字段x,y
Point = namedtuple("point", ["x", "y"])
# 实例化
p = Point(1, 2)
print(p)
print(p.x, p.y) # 通过属性取值
2.4 OrderedDict 有序字典 & defaultdict 默认字典
from collections import OrderedDict, defaultdict
# 有序字典
od = OrderedDict({'a':'娃哈哈', 'b':'薯条', 'c':'胡辣汤'})
print(od)
# 默认值为列表
dd = defaultdict(list)
# key不存在自动创建空列表
print(dd['娃哈哈'])
dd['娃哈哈'].append('饮料')
print(dd)
三、time 时间模块【重点】
Python 时间三种格式:
-
时间戳 (timestamp):浮点秒数,1970-01-01 00:00:00 至今总秒数,存数据库用
-
结构化时间 (struct_time):拆分年月日时分秒等,时间转换中间载体
-
格式化字符串时间:人类可读
2025-01-01 12:00:00,前端展示用
常用格式化符号表
| 符号 | 说明 | 符号 | 说明 |
|---|---|---|---|
| %Y | 4 位年份 | %m | 月份 01~12 |
| %d | 日期 01~31 | %H | 24 小时制小时 |
| %M | 分钟 | %S | 秒 |
| %y | 两位年份 | %I | 12 小时制小时 |
3.1 基础获取时间
import time
# 获取时间戳
stamp = time.time()
print("时间戳:", stamp)
# 获取结构化本地时间
struct_t = time.localtime()
print("结构化时间:", struct_t)
# 格式化时间字符串
str_t = time.strftime("%Y-%m-%d %H:%M:%S")
print("格式化时间:", str_t)
3.2 时间格式互转(必考)
import time
# 1.时间戳 → 格式化时间
stamp = 1888888888
struct = time.localtime(stamp)
str_date = time.strftime("%Y-%m-%d %H:%M:%S", struct)
print("时间戳转日期:", str_date)
# 2.日期字符串 → 时间戳
date_str = "2020-10-01 12:18:12"
struct2 = time.strptime(date_str, "%Y-%m-%d %H:%M:%S")
new_stamp = time.mktime(struct2)
print("日期转时间戳:", new_stamp)
3.3 计算时间差
import time
# 两个时间转时间戳
t1 = time.mktime(time.strptime('2017-09-11 08:30:00','%Y-%m-%d %H:%M:%S'))
t2 = time.mktime(time.strptime('2017-09-12 11:00:00','%Y-%m-%d %H:%M:%S'))
diff = t2 - t1
diff_struct = time.localtime(diff)
print(f'相差:{diff_struct.tm_year-1970}年{diff_struct.tm_mon-1}月{diff_struct.tm_mday-1}天{diff_struct.tm_hour}时{diff_struct.tm_min}分{diff_struct.tm_sec}秒')
四、random 随机模块
生成随机数字、随机取值、打乱序列,验证码、抽奖、洗牌常用
import random
# 0~1随机小数
print(random.random())
# [3,10]之间随机小数
print(random.uniform(3,10))
# [1,10]随机整数
print(random.randint(1,10))
# 步长2,1~10奇数
print(random.randrange(1,10,2))
# 随机选1个元素
print(random.choice([1,'周杰伦',['盖伦','胡辣汤']]))
# 随机选N个元素
print(random.sample([1,'23',[4,5]],2))
# 原地打乱列表
lst = [1,2,3,4,5,6,7,8]
random.shuffle(lst)
print(lst)
五、os 操作系统模块
与操作系统交互:文件夹创建删除、路径处理、文件信息、切换工作目录
5.1 文件夹 / 文件操作
import os
# 创建单级目录
# os.mkdir("test_dir")
# 递归创建多级目录
# os.makedirs("a/b/c")
# 删除空单级目录
# os.rmdir("test_dir")
# 递归删除空目录(空才删)
# os.removedirs("a/b/c")
# 删除文件
# os.remove("test.txt")
# 重命名
# os.rename("old.txt","new.txt")
# 列出目录下所有文件
print(os.listdir("./"))
# 获取当前工作目录
print(os.getcwd())
# 切换工作目录
# os.chdir("./test")
# 获取文件属性信息
print(os.stat("21.pdf"))
5.2 os.path 路径处理(跨平台重点)
import os
path = r"D:/python/demo.txt"
# 获取绝对路径
print(os.path.abspath(path))
# 拆分目录和文件名
print(os.path.split(path))
# 获取目录名
print(os.path.dirname(path))
# 获取文件名
print(os.path.basename(path))
# 路径拼接(自动适配系统分隔符)
new_path = os.path.join("D:\\python","test.txt")
print(new_path)
# 判断是否存在
print(os.path.exists(path))
# 判断是否文件/文件夹
print(os.path.isfile(path))
print(os.path.isdir("./"))
# 获取文件大小(字节)
print(os.path.getsize("21.pdf"))
5.3 系统分隔符属性
import os
print("路径分隔符:",os.sep) # win:\ linux:/
print("环境变量分隔:",os.pathsep) # win:; linux: :
print("系统名称:",os.name) # nt=win posix=linux
六、sys 解释器模块
操作 Python 解释器相关配置、命令行参数、模块搜索路径
import sys
# 命令行参数列表,第一个为脚本路径
print(sys.argv)
# 查看Python版本
print(sys.version)
# 模块导入搜索路径
print(sys.path)
# 操作系统平台
print(sys.platform)
# 退出程序
# sys.exit(0) # 0正常退出,非0异常退出
文末总结
-
collections:扩展容器,计数、双向队列、命名元组日常高频;
-
time:牢记「时间戳↔结构化时间↔字符串」双向转换逻辑;
-
random:随机数、抽样、打乱三个核心用法;
-
os:文件夹操作 + os.path 路径处理是文件项目必备;
-
sys:解释器配置、命令行参数、自定义导包路径常用。
更多推荐

所有评论(0)