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 emptyrmdir 删非空目录改用 shutil.rmtree()

总结

  1. 创建目录:单级 os.mkdir(),多级 os.makedirs()(带 exist_ok=True 最安全)
  2. 删除:文件 os.remove(),空目录 os.rmdir(),非空 shutil.rmtree()
  3. 路径:一律用 os.path.join() 拼接,跨平台永不报错
  4. 遍历文件os.walk() 是递归查找文件的神器
Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐