← 文件操作 | 异常处理 →

目录操作

Python 提供了 os 和 pathlib 模块来操作文件系统,包括创建、删除、遍历目录等。

使用 pathlib(推荐)

from pathlib import Path

# 获取当前目录
current_dir = Path.cwd()
print(f"当前目录: {current_dir}")

# 创建目录
new_dir = Path("my_folder")
new_dir.mkdir(exist_ok=True)  # exist_ok=True 避免目录已存在时报错

# 创建嵌套目录
nested_dir = Path("parent/child/grandchild")
nested_dir.mkdir(parents=True, exist_ok=True)

# 检查路径是否存在
print(f"目录是否存在: {new_dir.exists()}")

# 检查是否是目录
print(f"是目录吗: {new_dir.is_dir()}")

# 遍历目录
for item in current_dir.iterdir():
    if item.is_file():
        print(f"文件: {item.name}")
    elif item.is_dir():
        print(f"目录: {item.name}")

# 获取所有 Python 文件
python_files = list(current_dir.glob("*.py"))
print(f"Python 文件: {[f.name for f in python_files]}")

# 删除目录(必须为空)
empty_dir = Path("empty_folder")
empty_dir.mkdir(exist_ok=True)
empty_dir.rmdir()  # 只能删除空目录

# 删除文件
file_to_delete = Path("test.txt")
if file_to_delete.exists():
    file_to_delete.unlink()

使用 os 模块

import os

# 获取当前目录
current_dir = os.getcwd()
print(f"当前目录: {current_dir}")

# 创建目录
os.makedirs("my_folder", exist_ok=True)

# 创建嵌套目录
os.makedirs("parent/child", exist_ok=True)

# 列出目录内容
items = os.listdir(current_dir)
print(f"目录内容: {items}")

# 检查路径是否存在
print(f"路径存在: {os.path.exists('my_folder')}")

# 检查是否是目录
print(f"是目录: {os.path.isdir('my_folder')}")

# 检查是否是文件
print(f"是文件: {os.path.isfile('test.txt')}")

# 获取文件大小
if os.path.exists("example.txt"):
    size = os.path.getsize("example.txt")
    print(f"文件大小: {size} 字节")

# 删除空目录
os.rmdir("empty_folder")

# 删除文件
if os.path.exists("test.txt"):
    os.remove("test.txt")

路径操作

from pathlib import Path
import os

# 使用 pathlib
path = Path("/home/user/documents/file.txt")
print(f"文件名: {path.name}")           # file.txt
print(f"扩展名: {path.suffix}")         # .txt
print(f"父目录: {path.parent}")         # /home/user/documents
print(f"绝对路径: {path.absolute()}")

# 拼接路径
new_path = Path("/home/user") / "documents" / "file.txt"
print(f"拼接路径: {new_path}")

# 使用 os
path = "/home/user/documents/file.txt"
print(f"目录名: {os.path.dirname(path)}")      # /home/user/documents
print(f"文件名: {os.path.basename(path)}")    # file.txt
print(f"分割路径: {os.path.split(path)}")

# 拼接路径
new_path = os.path.join("/home/user", "documents", "file.txt")
print(f"拼接路径: {new_path}")

遍历目录树

import os

# 遍历目录树
for root, dirs, files in os.walk("."):
    print(f"当前目录: {root}")
    print(f"子目录: {dirs}")
    print(f"文件: {files}")
    print("-" * 40)

# 使用 pathlib 递归遍历
from pathlib import Path
for path in Path(".").rglob("*.py"):
    print(f"Python 文件: {path}")
💡 提示:pathlib 是 Python 3.4+ 引入的模块,在 Python 3.14 中功能进一步增强,提供了更面向对象的方式来处理路径,推荐使用。
← 文件操作 | 异常处理 →