Python内置模块(1):os模块与pathlib 模块

Python内置模块(1):os模块与pathlib 模块 os 模块偏底层的操作系统交互重点掌握路径拼接os.path.join、目录操作mkdir/rmdir、路径判断exists/isfilepathlib 模块面向对象的路径操作推荐替代os.path重点掌握Path类的拼接/、遍历rglob、创建目录mkdir一、os 模块与操作系统交互的核心1. 核心作用os模块是 Python 与操作系统底层交互的接口主要用来操作文件 / 目录创建、删除、重命名、获取系统信息、执行系统命令等兼容 Windows/Linux/Mac。2. 常用方法分类讲解按使用频率排序1目录 / 文件路径操作方法作用示例代码os.getcwd()获取当前工作目录你现在在哪个文件夹print(os.getcwd())→ 输出D:\python_project\demoos.chdir(path)切换工作目录cd 命令os.chdir(D:/python_project)→ 切换到指定目录os.listdir(path)列出指定目录下的所有文件 / 子目录print(os.listdir(D:/python_project))→ 输出[demo, test.py]2目录创建 / 删除方法作用示例代码os.mkdir(path)创建单层目录文件夹os.mkdir(new_folder)→ 创建名为 new_folder 的文件夹os.makedirs(path)创建多层目录递归创建os.makedirs(a/b/c)→ 依次创建 a→b→c 三层目录os.rmdir(path)删除空目录非空会报错os.rmdir(new_folder)→ 删除空的 new_folderos.removedirs(path)删除多层空目录os.removedirs(a/b/c)→ 依次删除 c→b→a都为空时3文件 / 目录重命名方法作用示例代码os.rename(old, new)重命名文件 / 目录os.rename(old.txt, new.txt)→ 把 old.txt 改名为 new.txt4判断路径类型方法作用示例代码os.path.exists(path)判断路径是否存在print(os.path.exists(test.py))→ 存在返回 True否则 Falseos.path.isfile(path)判断是否是文件print(os.path.isfile(test.py))→ 是文件返回 Trueos.path.isdir(path)判断是否是目录print(os.path.isdir(new_folder))→ 是目录返回 True5路径拼接 / 拆分重要方法作用示例代码os.path.join(path1, path2...)拼接路径自动补分隔符os.path.join(D:/demo, test.py)→ 输出D:/demo/test.pyos.path.split(path)拆分路径目录 文件名os.path.split(D:/demo/test.py)→ 输出(D:/demo, test.py)os.path.basename(path)获取文件名含后缀os.path.basename(D:/demo/test.py)→ 输出test.pyos.path.dirname(path)获取文件所在目录os.path.dirname(D:/demo/test.py)→ 输出D:/demo6执行系统命令进阶方法作用示例代码os.system(cmd)执行系统命令返回执行状态码os.system(dir)Windows/os.system(ls)Linux→ 列出目录内容3. os 模块实战案例批量创建文件夹import os # 需求在当前目录下创建10个文件夹folder_1 ~ folder_10 current_dir os.getcwd() # 获取当前目录 for i in range(1, 11): folder_name ffolder_{i} folder_path os.path.join(current_dir, folder_name) # 拼接路径兼容所有系统 if not os.path.exists(folder_path): # 避免重复创建报错 os.mkdir(folder_path) print(f创建成功{folder_path}) else: print(f已存在{folder_path})4. 新手注意路径分隔符Windows 用\Linux/Mac 用/务必用os.path.join()拼接路径避免手动写分隔符导致跨系统报错os.rmdir()只能删空目录删除非空目录需用shutil.rmtree()需导入shutil模块。在当前目录下面创建文件夹的好方法current_dir os.getcwd() # 获取当前目录folder_path os.path.join(current_dir, folder_name) # 拼接路径兼容所有系统if not os.path.exists(folder_path): # 避免重复创建报错os.mkdir(folder_path)二、pathlib 模块面向对象的路径操作Python3.41. 核心作用pathlib是 Python 3.4 新增的模块以面向对象OOP的方式操作路径比os.path更简洁、更易读是官方推荐的路径操作方式替代os.path。2. 核心概念Path 类所有操作都基于pathlib.Path类先创建 Path 对象再调用方法from pathlib import Path # 创建Path对象三种方式 p1 Path() # 当前目录等价于os.getcwd() p2 Path(test.py) # 相对路径 p3 Path(D:/demo/test.py) # 绝对路径 p4 Path.home() # 用户主目录WindowsC:\Users\你的用户名Linux/home/你的用户名3. 常用方法 / 属性对比 os.path 更直观功能pathlib 写法等价 os.path 写法获取当前目录Path.cwd()os.getcwd()拼接路径Path(D:/demo) / test.pyos.path.join(D:/demo, test.py)判断路径存在Path(test.py).exists()os.path.exists(test.py)判断是文件Path(test.py).is_file()os.path.isfile(test.py)判断是目录Path(demo).is_dir()os.path.isdir(demo)获取文件名Path(D:/demo/test.py).nameos.path.basename(D:/demo/test.py)获取目录Path(D:/demo/test.py).parentos.path.dirname(D:/demo/test.py)获取文件后缀Path(test.py).suffixos.path.splitext(test.py)[1]创建单层目录Path(new_folder).mkdir(exist_okTrue)os.mkdir(new_folder)exist_okTrue 避免重复创建报错创建多层目录Path(a/b/c).mkdir(parentsTrue, exist_okTrue)os.makedirs(a/b/c)重命名文件Path(old.txt).rename(new.txt)os.rename(old.txt, new.txt)4. pathlib 实战案例遍历目录下所有.py 文件from pathlib import Path # 需求遍历当前目录及子目录找出所有.py文件 current_dir Path.cwd() # rglob递归遍历所有子目录glob只遍历当前目录 py_files current_dir.rglob(*.py) for file in py_files: print(fPython文件{file}) # 输出完整路径如 D:\demo\test.py5. pathlib 优势为什么推荐用语法更简洁用/拼接路径比os.path.join()更符合直觉面向对象一个 Path 对象包含所有路径相关属性 / 方法不用记大量零散函数功能更全支持文件读写Path(test.txt).read_text()、获取文件大小Path(test.txt).stat().st_size等。