Python 的标准库是随 Python 安装包自带的、无需额外pip安装的库集合,覆盖了系统交互、数据处理、网络通信、文件 IO、并发编程等各类场景。以下是按功能分类的核心标准库。
1、python自带标准库总览
标准库对应的就是第三方库,就像一个单位里面的存在有编制的正式工与合同工。
所谓标准库,就是哪些使用场景非常多,非常频繁,且具有通用性的功能。
| 分类 | 标准库名称 | 核心作用 |
|---|---|---|
| 系统与资源管理类 | os |
与操作系统交互(文件 / 目录操作、路径处理、环境变量、进程管理等) |
| 系统与资源管理类 | sys |
访问 Python 解释器参数(命令行参数、退出程序、模块搜索路径等) |
| 系统与资源管理类 | shutil |
高级文件 / 目录操作(复制、移动、删除非空目录等) |
| 系统与资源管理类 | pathlib |
面向对象的路径处理(替代os.path,简化路径操作) |
| 数据结构与数学工具类 | collections |
扩展数据结构(defaultdict、deque、Counter等增强版容器) |
| 数据结构与数学工具类 | datetime |
日期 / 时间处理(时间表示、格式转换、时间差计算) |
| 数据结构与数学工具类 | math |
数学运算(三角函数、对数、常量pi/e等) |
| 数据结构与数学工具类 | random |
生成随机数 / 随机选择(整数、元素选择、概率分布等) |
| 数据结构与数学工具类 | operator |
提供运算符对应的函数(如add对应+,用于函数式编程) |
| 文件与数据格式处理类 | io |
基础 IO 操作(内存字符串 / 字节流StringIO/BytesIO) |
| 文件与数据格式处理类 | json |
JSON 数据序列化 / 反序列化(Python 对象与 JSON 字符串互转) |
| 文件与数据格式处理类 | csv |
读写 CSV 格式文件(表格数据的解析与生成) |
| 文件与数据格式处理类 | pickle |
Python 对象序列化(将对象保存为二进制文件或恢复) |
| 文件与数据格式处理类 | xml |
XML 格式处理(解析、生成 XML 文档,如xml.etree.ElementTree) |
| 网络与通信类 | socket |
底层网络通信(TCP/UDP 套接字,实现客户端 / 服务器交互) |
| 网络与通信类 | urllib |
HTTP 请求工具(发送 GET/POST、解析 URL 参数) |
| 网络与通信类 | http |
HTTP 协议工具(搭建简易 HTTP 服务器、发送 HTTP 请求) |
| 网络与通信类 | smtplib/email |
邮件通信(smtplib连接服务器,email构造邮件内容) |
| 文本与正则处理类 | re |
正则表达式工具(字符串匹配、提取、替换) |
| 文本与正则处理类 | string |
字符串工具(字符集、字符串模板等) |
| 并发与异步编程类 | threading |
多线程编程(创建线程、线程锁等) |
| 并发与异步编程类 | multiprocessing |
多进程编程(利用多核 CPU,规避 GIL 限制) |
| 并发与异步编程类 | concurrent.futures |
简洁并发接口(线程池ThreadPoolExecutor、进程池ProcessPoolExecutor) |
| 并发与异步编程类 | asyncio |
异步 IO 编程(async/await语法,高效处理 IO 密集型任务) |
| 调试、日志与测试类 | logging |
日志记录(按级别输出日志、写入文件) |
| 调试、日志与测试类 | pdb |
命令行调试器(断点、单步执行等调试操作) |
| 调试、日志与测试类 | unittest |
单元测试框架(编写测试用例、断言、测试套件) |
| 调试、日志与测试类 | traceback |
获取异常回溯信息(打印详细错误栈) |
| 其他常用工具类 | itertools |
高效迭代工具(循环、笛卡尔积、迭代器拼接等) |
| 其他常用工具类 | functools |
函数式编程工具(缓存lru_cache、固定参数partial等) |
| 其他常用工具类 | sqlite3 |
操作 SQLite 数据库(轻量级文件数据库,无需额外服务) |
| 其他常用工具类 | tkinter |
简易 GUI 开发(搭建图形界面窗口程序) |
2、系统与资源管理类
2.1 详细介绍python中的os库
代码中的os是 Python 的标准库模块 (全称 Operating System,无需额外安装,Python 默认自带),其核心作用是提供与操作系统交互的统一接口,可以在 Windows、Linux、macOS 等不同系统下,以一致的方式完成 "文件 / 目录操作、路径处理、进程管理、环境变量读取" 等操作系统相关的任务。
2.1.1、os模块的核心作用(按常用场景分类)
这是os模块最常用的功能,用于管理文件、文件夹的创建、删除、重命名、遍历等:
os.mkdir("new_dir"):创建单个目录;os.makedirs("dir1/dir2"):递归创建多级目录;os.rmdir("empty_dir"):删除空目录;os.remove("test.txt"):删除文件;os.rename("old.txt", "new.txt"):重命名文件 / 目录;os.listdir("."):列出当前目录下的所有文件 / 目录。
2.2.2、 os库单独详细讲解
(1). os.mkdir(path, mode=0o777):创建单个目录,第一个参数是是必须的,第二个参数大多数情况下,可以不写
| 规则项 | 说明 |
|---|---|
| 参数要求 | - path:需创建的单个层级目录路径 (如"new_dir",不能是"dir1/dir2");- mode:目录权限(默认0o777,受系统 umask 限制,通常无需手动改)。 |
| 使用限制 | 仅能创建1 级目录 ,且该目录的父目录必须已存在 (比如创建"a/b"会报错,因为a不存在)。 |
| 常见异常 | - FileExistsError:目标目录已存在;- FileNotFoundError:父目录不存在;- 无权限创建目录。 |
| 注意事项 | 若需创建多级目录,需改用os.makedirs()。 |
- 权限分为 3 个维度:所有者(user)、所属组(group)、其他用户(others);这3个权限分别对应的就是,以下几个所有者,现在对应的就是admin,guest

- 每个维度的权限由 "读(r=4)、写(w=2)、执行(x=1)" 的数值之和表示;
0o777的含义:所有者、所属组、其他用户都拥有 ** 读(r)、写(w)、执行(x)** 权限(因为4+2+1=7,三个维度都取 7)。- 即3种用户,都具有读写,和执行权(这里的读和写,都好理解,就是执行权,可能有不太直观,执行权:能否将这个文件作为 "可执行程序 / 脚本" 直接运行。)
很多初学者可能存在的一个疑问,什么叫做父级目录必须存在,以及我们创建的文件夹,它上面的父级文件夹究竟是啥?
此时这个目录会被创建在 Python 脚本的「当前工作目录」 中。如果不想让创建的路径在默认文件夹,也可以这样写: os.mkdir("D:/python_demo/new_dir")
"当前工作目录" 是指:你运行这个 Python 脚本时,终端 / 命令行所处的目录,或者 IDE(如 PyCharm)中配置的 "工作目录"。
你可以用
os.getcwd()查看当前工作目录的具体位置,例如:python
pythonimport os # 查看当前工作目录 print("当前工作目录:", os.getcwd()) # 创建目录(仅写最后一级,即相对路径) os.mkdir("new_dir") # 此时new_dir会被创建在上面打印的"当前工作目录"里
(2). os.makedirs(name, mode=0o777, exist_ok=False):递归创建多级目录
| 规则项 | 说明 |
|---|---|
| 参数要求 | - name:需创建的多级目录路径 (如"dir1/dir2/dir3");- mode:目录权限(同os.mkdir);- exist_ok:布尔值,默认False(目录已存在则报错);设为True时,目录已存在不会报错。 |
| 使用限制 | 可自动创建路径中所有不存在的父目录(比如"a/b/c",若a、a/b都不存在,会自动递归创建)。 |
| 常见异常 | - FileExistsError:exist_ok=False且目标目录已存在;- PermissionError:无权限创建目录。 |
| 注意事项 | 开发中常用exist_ok=True避免 "目录已存在" 的报错,简化代码。 |
写法上,需要注意其他几个同为路径设置的函数,都是采取每一个字符的前两个字母,但是这个比较罕见的采取的是全写。
需要注意的是,文件还是默认在当前工作目录,如果不想让创建的路径在默认文件夹,也可以这样写: os.makedirs("C:/python_demo/new_dir"),同理最后两个参数,一般可以不设置。
(3). os.rmdir(path):删除空目录
| 规则项 | 说明 |
|---|---|
| 参数要求 | path:需删除的空目录路径。 |
| 使用限制 | 仅能删除空目录 (目录内有文件 / 子目录时会报错)(这个性质是核心,我们也可以利用这个特性,来判断一个文件夹中是否有文件或包含了子文件夹)。 |
| 常见异常 | - FileNotFoundError:目标目录不存在;- OSError:目录非空(无法删除);- PermissionError:无权限删除目录。 |
| 注意事项 | 若需删除非空目录,需改用shutil.rmtree()(shutil是标准库,需额外导入)。 |
仅删除指定路径对应的「最后一级目录」,父级目录不会被删除。
(4). os.remove(path):删除文件
| 规则项 | 说明 |
|---|---|
| 参数要求 | path:需删除的文件路径。 |
| 使用限制 | 仅能删除文件,不能删除目录(删除目录会报错)。 |
| 常见异常 | - FileNotFoundError:目标文件不存在;- IsADirectoryError:路径是目录(不是文件);- PermissionError:无权限删除文件。 |
| 注意事项 | 此操作不可逆,删除前建议先通过os.path.isfile(path)确认是文件。 |
注意与rmdir函数的区别,一个是删除路径中的文件夹,其中dir就是指路径。
path必须指定到「具体的文件」(包含文件名 + 后缀),不能是目录
(5). os.rename(src, dst):重命名 / 移动文件 / 目录
| 规则项 | 说明 |
|---|---|
| 参数要求 | - src:原文件 / 目录的路径;- dst:新文件 / 目录的路径。 |
| 使用限制 | - 若dst是已存在的文件 :会直接覆盖(不可逆);- 若dst是已存在的目录 :会报错(无法覆盖目录);- 支持 "移动文件 / 目录"(比如os.rename("a.txt", "dir1/a.txt"),需dir1已存在)。 |
| 常见异常 | - FileNotFoundError:src不存在;- FileExistsError:dst是已存在的目录;- PermissionError:无权限操作。 |
| 注意事项 | - 跨文件系统(比如从 C 盘移动到 D 盘)时,部分系统可能不支持,建议改用shutil.move();- 重命名前建议确认dst不存在(避免覆盖)。 |
(6). os.listdir(path='.'):列出目录下的所有内容
| 规则项 | 说明 |
|---|---|
| 参数要求 | - path:目标目录路径,默认值"."(代表当前工作目录)。 |
| 使用限制 | 返回目录下的直接子项列表(仅包含文件名 / 子目录名,不递归列出子目录内的内容),返回结果是字符串列表。 |
| 常见异常 | - FileNotFoundError:目标目录不存在;- NotADirectoryError:path是文件(不是目录);- PermissionError:无权限访问目录。 |
| 注意事项 | 若需递归遍历目录所有内容,需结合os.walk()使用。 |
以上函数实战整体代码:
python
import os
# ==================== 1. 用 os.mkdir 创建单级目录 ====================
target_dir = "demo_dir" # 要创建的单级目录名
try:
os.mkdir(target_dir) # 创建单级目录
print(f"✅ 已通过 os.mkdir 创建单级目录:{target_dir}")
except FileExistsError:
print(f"⚠️ 目录 {target_dir} 已存在,跳过创建")
# ==================== 2. 创建测试文件(为后续 os.remove 做准备) ====================
file_name = "test_file.txt"
file_path = os.path.join(target_dir, file_name) # 拼接文件的完整路径,就是将路径和文件名拼装
with open(file_path, "w", encoding="utf-8") as f:
f.write("这是是写入文件test_file.txt的内容")
print(f"✅ 已创建测试文件:{file_path}")
# ==================== 3. 用 os.listdir 列出目录下的内容 ====================
dir_content = os.listdir(target_dir) # 列出 target_dir 下的所有文件/子目录
print(f"\n🔍 通过 os.listdir 查看 {target_dir} 的内容:{dir_content}")
# ==================== 4. 用 os.rename 重命名文件 ====================
new_file_name = "renamed_file.txt"
new_file_path = os.path.join(target_dir, new_file_name)
os.rename(file_path, new_file_path) # 重命名文件(原路径 → 新路径)
print(f"🔄 已通过 os.rename 将文件重命名为:{new_file_path}")
# ==================== 5. 再次用 os.listdir 查看重命名后的目录内容 ====================
updated_content = os.listdir(target_dir)
print(f"🔍 重命名后 {target_dir} 的内容:{updated_content}")
# ==================== 6. 用 os.rename 重命名目录 ====================
new_dir_name = "renamed_demo_dir"
os.rename(target_dir, new_dir_name) # 重命名目录(原目录名 → 新目录名)
print(f"🔄 已通过 os.rename 将目录重命名为:{new_dir_name}")
# ==================== 7. 用 os.remove 删除文件 ====================
final_file_path = os.path.join(new_dir_name, new_file_name)
os.remove(final_file_path) # 删除指定路径的文件(必须精确到文件名)
print(f"❌ 已通过 os.remove 删除文件:{final_file_path}")
# ==================== 8. 用 os.rmdir 删除空目录 ====================
try:
os.rmdir(new_dir_name) # 删除空目录(目录内已无文件,满足删除条件)
print(f"❌ 已通过 os.rmdir 删除空目录:{new_dir_name}")
except OSError:
print(f"⚠️ 目录 {new_dir_name} 非空,无法用 os.rmdir 删除")
print("\n🎉 所有 os 函数(mkdir/rmdir/remove/rename/listdir)演示完成!")
2. 路径处理(通过os.path子模块)
os.path是os模块的子模块,专门用于处理文件路径 (自动适配不同系统的路径分隔符,如 Windows 的\、Linux 的/),代码中os.path.exists("test.txt")就属于这类操作:
os.path.exists(path):判断指定路径(文件 / 目录)是否存在os.path.join("dir", "file.txt"):拼接路径 (跨平台安全,比如 Windows 下会生成dir\file.txt,Linux 下生成dir/file.txt);(这个功能很关键)os.path.isfile(path):判断路径是否为文件;os.path.isdir(path):判断路径是否为目录;os.path.abspath(path):获取路径的绝对路径。
这里需要澄清一个概念,这里的path是属于os的一个子模块。
python
import os
# ==================== 1. os.path.join:跨平台拼接路径 ====================
# 场景:拼接目录和文件名,自动适配Windows(\)和Linux/macOS(/)
dir_name = "test_folder"
file_name = "demo.txt"
# 拼接路径(无需手动加/或\,Python自动处理)
join_path = os.path.join(dir_name, file_name)
print(f"1. os.path.join 拼接结果:{join_path}")
# 补充:也可以拼接多级目录
multi_join_path = os.path.join("parent", "child", "file.csv")
print(f" 多级路径拼接结果:{multi_join_path}\n")
# ==================== 2. os.path.abspath:获取绝对路径 ====================
# 场景:把相对路径转为绝对路径(显示文件/目录在电脑中的完整位置)
relative_path = join_path # 上面拼接的相对路径
abs_path = os.path.abspath(relative_path)
print(f"2. {relative_path} 的绝对路径:{abs_path}\n")
# ==================== 准备测试文件/目录(为后续判断做准备) ====================
# 创建测试目录
os.makedirs(dir_name, exist_ok=True)
# 创建测试文件
with open(join_path, "w", encoding="utf-8") as f:
f.write("测试内容")
# ==================== 3. os.path.exists:判断路径是否存在 ====================
# 场景:操作文件/目录前先判断是否存在,避免报错
# 检查文件是否存在
file_exists = os.path.exists(join_path)
print(f"3. 文件 {join_path} 是否存在:{file_exists}")
# 检查目录是否存在
dir_exists = os.path.exists(dir_name)
print(f" 目录 {dir_name} 是否存在:{dir_exists}")
# 检查不存在的路径
non_exists_path = "non_exist_file.txt"
non_exists = os.path.exists(non_exists_path)
print(f" 不存在的路径 {non_exists_path} 是否存在:{non_exists}\n")
# ==================== 4. os.path.isfile:判断是否为文件 ====================
# 场景:区分路径是文件还是目录
is_file = os.path.isfile(join_path)
is_file_fake = os.path.isfile(dir_name) # 把目录路径传入
print(f"4. {join_path} 是否为文件:{is_file}")
print(f" {dir_name} 是否为文件:{is_file_fake}\n")
# ==================== 5. os.path.isdir:判断是否为目录 ====================
# 场景:和isfile配合,精准识别路径类型
is_dir = os.path.isdir(dir_name)
is_dir_fake = os.path.isdir(join_path) # 把文件路径传入
print(f"5. {dir_name} 是否为目录:{is_dir}")
print(f" {join_path} 是否为目录:{is_dir_fake}\n")
# ==================== 清理测试文件/目录(保持环境整洁) ====================
os.remove(join_path) # 删除测试文件
os.rmdir(dir_name) # 删除测试目录
print("✅ 测试文件/目录已清理完成")
3. 进程与系统管理
用于和操作系统的进程、系统信息交互:
os.system("echo hello"):执行系统命令(返回命令的退出状态码);os.popen("ls -l"):执行系统命令并获取输出结果;os.getpid():获取当前 Python 进程的 ID;os.getcwd():获取当前工作目录。(这个函数经常用)
4. 环境变量操作
用于读取、设置系统环境变量:
os.environ:获取系统环境变量的字典(如os.environ.get("PATH")可查看系统的 PATH 路径);os.environ["MY_VAR"] = "value":设置临时环境变量(仅在当前 Python 进程有效)。
5. 系统信息获取
获取操作系统的基础信息:
os.name:获取系统类型(Windows 下返回nt,Linux/macOS 下返回posix);os.uname():获取系统详细信息(仅 Linux/macOS 支持)。