Python 目录/文件完整操作手册
·
Python 目录/文件完整操作手册
一、第一步:导入模块
# 核心:文件/目录基础操作
import os
# 辅助:删除非空目录、复制文件夹(os 删不掉非空目录)
import shutil
二、获取当前路径 / 切换工作目录
1. 获取当前脚本运行的目录
# 获取当前工作目录(绝对路径)
current_dir = os.getcwd()
print("当前目录:", current_dir)
2. 切换工作目录
# 切换到指定目录(传入绝对路径/相对路径)
os.chdir("/Users/xxx/Desktop")
print("切换后目录:", os.getcwd())
三、创建目录(文件夹)
1. 创建单级目录(父目录必须存在)
# 在当前目录创建名为 test 的文件夹
os.mkdir("test")
# 若目录已存在,会报错!推荐加判断:
if not os.path.exists("test"):
os.mkdir("test")
2. 创建多级目录(递归创建,推荐)
# 自动创建 a → b → c 三级目录,不存在的父目录会一起建
os.makedirs("a/b/c")
# 安全写法:目录已存在不报错
os.makedirs("a/b/c", exist_ok=True)
四、删除文件 / 目录
1. 删除文件
# 永久删除文件,无法恢复!
os.remove("test.txt")
2. 删除空目录
# 只能删除空文件夹,非空会报错
os.rmdir("test")
3. 删除非空目录(必须用 shutil)
# 强制删除整个文件夹 + 所有内容
shutil.rmtree("a")
五、查看目录内容
1. 列出目录下所有文件/文件夹名称
# 列出当前目录所有内容
files = os.listdir(".")
print("当前目录内容:", files)
# 列出指定目录内容
files = os.listdir("/Users/xxx/Desktop")
2. 递归遍历目录树(常用,用于找所有文件)
# 遍历 root 目录下所有子目录和文件
for root, dirs, files in os.walk("."):
print("当前路径:", root) # 当前遍历到的目录
print("子目录:", dirs) # 当前目录下的文件夹
print("文件名:", files) # 当前目录下的文件
print("-"*30)
六、路径处理(核心:跨平台不报错)
1. 拼接路径(绝对不要手动写 / 或 \)
# 自动适配 Windows/Linux/Mac 路径分隔符
file_path = os.path.join("folder", "sub", "test.txt")
print("拼接后路径:", file_path)
2. 获取绝对路径
abs_path = os.path.abspath("test.txt")
print("绝对路径:", abs_path)
3. 判断路径是否存在
# 可判断 文件 或 目录
if os.path.exists("test.txt"):
print("文件存在")
else:
print("文件不存在")
4. 判断是文件还是目录
# 判断是否为文件
print(os.path.isfile("test.txt"))
# 判断是否为目录
print(os.path.isdir("test"))
5. 拆分路径(目录名 / 文件名 / 后缀)
# 拆分:目录 + 文件名
dir_name, file_name = os.path.split("/a/b/c.txt")
print("目录:", dir_name) # /a/b
print("文件名:", file_name)# c.txt
# 拆分:文件名 + 后缀
name, ext = os.path.splitext("c.txt")
print("文件名:", name) # c
print("后缀:", ext) # .txt
6. 获取文件大小(字节)
size = os.path.getsize("test.txt")
print("文件大小:", size, "字节")
七、重命名 / 移动文件
1. 重命名文件/目录
# 旧名 → 新名(文件/文件夹都能用)
os.rename("old.txt", "new.txt")
os.rename("old_dir", "new_dir")
2. 移动文件(等价于跨目录重命名)
# 把 test.txt 移动到 demo 文件夹
os.rename("test.txt", os.path.join("demo", "test.txt"))
八、完整运行示例
import os
import shutil
# ====================== 1. 基础路径
print("===== 当前目录 =====")
print(os.getcwd())
# ====================== 2. 创建目录
print("\n===== 创建目录 =====")
os.makedirs("my_project/images", exist_ok=True)
# ====================== 3. 创建测试文件
with open(os.path.join("my_project", "test.txt"), "w", encoding="utf-8") as f:
f.write("Hello Python")
# ====================== 4. 查看目录内容
print("\n===== 查看目录内容 =====")
print(os.listdir("my_project"))
# ====================== 5. 遍历所有文件
print("\n===== 递归遍历文件 =====")
for root, dirs, files in os.walk("my_project"):
print(f"路径:{root},文件:{files}")
# ====================== 6. 重命名
os.rename(
os.path.join("my_project", "test.txt"),
os.path.join("my_project", "hello.txt")
)
# ====================== 7. 删除文件
os.remove(os.path.join("my_project", "hello.txt"))
# ====================== 8. 删除非空目录
shutil.rmtree("my_project")
print("\n操作完成!")
九、高频报错 + 解决方案
| 报错 | 原因 | 解决 |
|---|---|---|
FileNotFoundError | 目录不存在 | 用 os.makedirs() 先建目录 |
FileExistsError | 目录已存在 | 加 exist_ok=True 或先判断 exists() |
PermissionError | 权限不足 | 用管理员运行 / 换目录 |
OSError: Directory not empty | 用 rmdir 删非空目录 | 改用 shutil.rmtree() |
总结
- 创建目录:单级
os.mkdir(),多级os.makedirs()(带exist_ok=True最安全) - 删除:文件
os.remove(),空目录os.rmdir(),非空shutil.rmtree() - 路径:一律用
os.path.join()拼接,跨平台永不报错 - 遍历文件:
os.walk()是递归查找文件的神器
更多推荐



所有评论(0)