Python3 OS 文件/目录方法

Python3 OS 文件/目录方法


🎯 学习目标

掌握 Python os 模块中与文件和目录操作相关的常用函数,能够在 Windows 系统下使用 PyCharm 进行跨平台兼容的文件系统管理。理解如何创建、删除、遍历目录结构,并结合实际项目场景实现自动化文件处理。


🔑 核心重点

分类 内容
文件操作 创建、重命名、删除文件
目录操作 创建目录、切换工作路径、列出目录内容
路径处理 使用 os.path 拼接、判断、获取文件信息
系统交互 获取当前进程信息、执行系统命令
实际应用场景 自动化脚本、日志清理、数据迁移、备份工具等

📚 详细讲解

一、导入 os 模块

import os

所有与操作系统交互的功能都通过 os 模块提供。


二、常见文件操作方法

os.remove(file):删除文件

os.remove("temp.txt")  # 删除指定文件

📌 若文件不存在会抛出 FileNotFoundError,建议先检查是否存在。

os.rename(src, dst):重命名或移动文件

os.rename("old_name.txt", "new_name.txt")

📌 可用于移动文件到其他目录:

os.rename("docs/report.txt", "backup/report.txt")

三、目录操作方法

os.mkdir(path):创建单层目录

os.mkdir("my_folder")

📌 如果目录已存在,会抛出 FileExistsError

os.makedirs(path):递归创建多层目录

os.makedirs("a/b/c")  # 自动创建 a → a/b → a/b/c

os.rmdir(path):删除空目录

os.rmdir("empty_folder")

📌 无法删除非空目录,需使用 shutil.rmtree()(见拓展练习)

os.listdir(path):列出目录内容

files = os.listdir(".")  # 列出当前目录下的所有文件和子目录
print(files)

四、路径相关操作(推荐使用 os.path

os.path.join():拼接路径(自动适配系统)

path = os.path.join("data", "2025", "file.txt")
print(path)  # 输出:data\2025\file.txt (Windows)

os.path.exists(path):判断路径是否存在

if os.path.exists("data"):
    print("目录存在")

os.path.isfile(path)os.path.isdir(path)

if os.path.isfile("data.txt"):
    print("这是一个文件")

os.path.abspath(path):获取绝对路径

abs_path = os.path.abspath("data.txt")
print(abs_path)

os.path.basename(path)os.path.dirname(path)

print(os.path.basename("C:/project/data.txt"))  # 输出 data.txt
print(os.path.dirname("C:/project/data.txt"))   # 输出 C:/project

五、其他实用功能

os.getcwd():获取当前工作目录

current_dir = os.getcwd()
print(current_dir)

os.chdir(path):切换当前工作目录

os.chdir("my_project")

os.system(command):执行系统命令(Windows)

os.system("notepad")  # 打开记事本

os.name:查看操作系统类型

print(os.name)  # Windows 输出 nt

⚠️ 注意事项

  • 操作文件前务必确认文件/目录是否存在,避免异常
  • 尽量使用 os.path 来处理路径,提高跨平台兼容性
  • 删除目录时确保目录为空,否则使用 shutil.rmtree()
  • 不要随意删除系统关键文件或目录
  • 在脚本中执行系统命令时要注意安全性(如注入攻击)

🧪 实际案例分析

📌 场景:构建一个“日志文件清理器”

功能需求:

  • 遍历 logs/ 目录下的所有 .log 文件
  • 删除超过 7 天的旧日志文件
  • 输出清理结果

示例代码:

import os
import time

log_dir = "logs"
now = time.time()
days_to_keep = 7

for filename in os.listdir(log_dir):
    file_path = os.path.join(log_dir, filename)
    
    if os.path.isfile(file_path) and filename.endswith(".log"):
        file_age = now - os.path.getmtime(file_path)
        if file_age > days_to_keep * 86400:
            os.remove(file_path)
            print(f"已删除过期日志:{filename}")

📌 说明:

  • os.path.getmtime(file_path) 返回文件最后修改时间戳
  • 86400 是一天的秒数
  • 该脚本适合定时任务中运行,保持日志目录整洁

🧩 拓展练习(动手实践)

  1. 编写程序,扫描指定目录并统计 .txt 文件数量。
  2. 创建一个“文件分类器”,根据扩展名将文件移动到不同子目录中。
  3. 实现一个“备份工具”,将指定目录复制到另一个位置,并记录日志。
  4. 编写脚本,批量重命名文件夹中的图片文件为统一格式(如 img_001.jpg)。
  5. 构建一个“磁盘清理助手”,查找并删除大于一定大小的临时文件。

📚 推荐阅读


🧭 下一步建议

  • 下一章学习内容:《Python3 shutil 模块:高级文件操作》
  • 掌握复制、移动、压缩整个目录树的方法
  • 学习使用 shutil.copytree()shutil.rmtree() 等高级函数
  • 结合 osshutil 构建完整的文件管理系统

如果你希望我为你提供:

  • Python OS 模块速查表 PDF(含函数+参数+示例)
  • 更多实战项目练习题(如文件分类器、备份工具、磁盘清理器等)
  • 视频教学资源推荐(中文讲解)
  • 如何结合 logging 模块记录文件操作日志

欢迎随时告诉我 😊

posted @ 2025-05-29 10:39  红尘过客2022  阅读(36)  评论(0)    收藏  举报