Python库学习-标准库

Python 的标准库是随 Python 安装包自带的、无需额外pip安装的库集合,覆盖了系统交互、数据处理、网络通信、文件 IO、并发编程等各类场景。以下是按功能分类的核心标准库。

1、python自带标准库总览

标准库对应的就是第三方库,就像一个单位里面的存在有编制的正式工与合同工。

所谓标准库,就是哪些使用场景非常多,非常频繁,且具有通用性的功能。

分类 标准库名称 核心作用
系统与资源管理类 os 与操作系统交互(文件 / 目录操作、路径处理、环境变量、进程管理等)
系统与资源管理类 sys 访问 Python 解释器参数(命令行参数、退出程序、模块搜索路径等)
系统与资源管理类 shutil 高级文件 / 目录操作(复制、移动、删除非空目录等)
系统与资源管理类 pathlib 面向对象的路径处理(替代os.path,简化路径操作)
数据结构与数学工具类 collections 扩展数据结构(defaultdictdequeCounter等增强版容器)
数据结构与数学工具类 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

python 复制代码
import 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",若aa/b都不存在,会自动递归创建)。
常见异常 - FileExistsErrorexist_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已存在)。
常见异常 - FileNotFoundErrorsrc不存在;- FileExistsErrordst是已存在的目录;- PermissionError:无权限操作。
注意事项 - 跨文件系统(比如从 C 盘移动到 D 盘)时,部分系统可能不支持,建议改用shutil.move();- 重命名前建议确认dst不存在(避免覆盖)。

(6). os.listdir(path='.'):列出目录下的所有内容

规则项 说明
参数要求 - path:目标目录路径,默认值"."(代表当前工作目录)。
使用限制 返回目录下的直接子项列表(仅包含文件名 / 子目录名,不递归列出子目录内的内容),返回结果是字符串列表。
常见异常 - FileNotFoundError:目标目录不存在;- NotADirectoryErrorpath是文件(不是目录);- 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.pathos模块的子模块,专门用于处理文件路径 (自动适配不同系统的路径分隔符,如 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 支持)。
相关推荐
西岸行者4 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习