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 支持)。
相关推荐
wenxin-1 天前
NS3学习-Packet数据包结构
网络·学习·ns3·ns3内核
Century_Dragon1 天前
特斯拉Model3智能网联汽车自动驾驶虚拟教学实训软件
学习
wdfk_prog1 天前
[Linux]学习笔记系列 -- [fs]read_write
linux·笔记·学习
风送雨1 天前
Go 语言进阶学习:第 2 周 —— 接口、反射与错误处理进阶
开发语言·学习·golang
蓝程序1 天前
Spring AI学习 程序接入大模型(框架接入)
人工智能·学习·spring
YangYang9YangYan1 天前
2026高职大数据专业:数据分析学习的价值与前景
大数据·学习·数据分析
CyanMind1 天前
强化学习观测项详解之——重力投影
学习·机器人
别了,李亚普诺夫1 天前
PCB设计学习笔记
笔记·学习
Aughts1 天前
Axure学习
学习