Python3 os 模块与文件目录

写脚本时常要"看当前目录、建文件夹、改文件名、拼接路径"。os 模块把操作系统提供的能力 包装成 Python 函数,配合 os.path 处理路径,是文件目录操作的核心工具。

os 常用函数

import os

print(os.getcwd())        # 输出:当前工作目录,如 D:\\myproject
os.chdir("D:/myproject")  # 切换工作目录
print(os.listdir("."))    # 列出目录下所有文件名
import os
os.mkdir("data")                     # 创建单个目录(已存在会报错)
os.makedirs("a/b/c", exist_ok=True)  # 递归创建多级目录
os.remove("old.txt")                 # 删除文件
os.rmdir("empty")                    # 删除空目录
os.rename("old.txt", "new.txt")      # 重命名或移动
st = os.stat("new.txt")              # 获取文件信息
print(st.st_size)                    # 输出:文件大小(字节)

os.path 路径处理

手动拼接 "a" + "/" + "b" 在 Windows 上容易出错,用 os.path.join 最稳妥:

import os
p = os.path.join("data", "2024", "1.txt")   # 自动按平台分隔符拼接
print(p)                     # 输出:data\\2024\\1.txt(Windows)
print(os.path.exists(p))     # 输出:False 是否存在
print(os.path.isdir("data")) # 输出:True  是否目录
print(os.path.isfile(p))     # 输出:False 是否文件
print(os.path.splitext(p))   # 拆分文件名与扩展名
print(os.path.basename(p))   # 输出:1.txt
print(os.path.dirname(p))    # 输出:data\\2024
print(os.path.getsize(p))    # 文件大小

遍历目录 os.walk

os.walk 递归遍历整棵目录树,返回 (当前目录, 子目录列表, 文件列表):

import os
for root, dirs, files in os.walk("project"):
    for name in files:
        if name.endswith(".py"):
            print(os.path.join(root, name))   # 输出所有 .py 的完整路径

shutil:复制与删除

复制整个目录、删除非空目录用 shutil 更省事:

import shutil
shutil.copy("a.txt", "b.txt")   # 复制文件
shutil.copytree("src", "dst")   # 复制整个目录
shutil.rmtree("olddir")         # 递归删除非空目录

小结:os 负责目录切换、创建删除与文件信息,os.path 负责跨平台路径拼接与判断, 整树遍历用 os.walk,整目录复制删除交给 shutil。

笔记加载中…