(13)100天python从入门到拿捏《目录操作》

os 模块用于文件和目录操作

文章目录

  • [`os` 模块用于文件和目录操作](#os 模块用于文件和目录操作)
  • [一、`os` 模块简介](#一、os 模块简介)
  • 二、常用文件与目录操作方法
    • [1️⃣ 获取当前工作目录](#1️⃣ 获取当前工作目录)
    • [2️⃣ 改变当前工作目录](#2️⃣ 改变当前工作目录)
    • [3️⃣ 创建目录](#3️⃣ 创建目录)
    • [4️⃣ 删除目录](#4️⃣ 删除目录)
    • [5️⃣ 列出目录内容](#5️⃣ 列出目录内容)
    • [6️⃣ 重命名文件或目录](#6️⃣ 重命名文件或目录)
    • [7️⃣ 删除文件](#7️⃣ 删除文件)
    • [8️⃣ 判断文件或目录是否存在](#8️⃣ 判断文件或目录是否存在)
    • [9️⃣ 判断路径类型](#9️⃣ 判断路径类型)
    • [🔟 获取文件的绝对路径](#🔟 获取文件的绝对路径)
    • [1️⃣1️⃣ 获取文件路径的目录与文件名](#1️⃣1️⃣ 获取文件路径的目录与文件名)
    • [1️⃣2️⃣ 拼接路径](#1️⃣2️⃣ 拼接路径)
    • [1️⃣3️⃣ 拆分路径](#1️⃣3️⃣ 拆分路径)
    • [1️⃣4️⃣ 获取文件大小](#1️⃣4️⃣ 获取文件大小)
    • [1️⃣5️⃣ 遍历目录树(递归)](#1️⃣5️⃣ 遍历目录树(递归))
  • 三、综合实战案例
  • 四、总结表格

一、os 模块简介

os 模块是 Python 内置的一个标准库,用于与操作系统进行交互。

它可以执行

  • 文件与目录的创建、删除、重命名;
  • 获取文件属性;
  • 遍历目录;
  • 获取系统信息(如路径、环境变量);
  • 以及执行系统命令。

使用前需先导入:

py 复制代码
import os

二、常用文件与目录操作方法

1️⃣ 获取当前工作目录

py 复制代码
os.getcwd()

📘 示例

py 复制代码
import os
print("当前工作目录:", os.getcwd())

🧾 输出示例

复制代码
当前工作目录: C:\Users\oyaZXL\Desktop\

2️⃣ 改变当前工作目录

py 复制代码
os.chdir(path)

📘 示例

py 复制代码
os.chdir("C:/Users/lang/Documents")
print("切换后目录:", os.getcwd())

🧾 输出

复制代码
切换后目录: C:\Users\lang\Documents

3️⃣ 创建目录

py 复制代码
os.mkdir(path)
os.makedirs(path)
  • mkdir():只能创建一级目录;
  • makedirs():可递归创建多级目录。

📘 示例

复制代码
os.mkdir("test_folder")
os.makedirs("a/b/c")  # 递归创建多级目录

4️⃣ 删除目录

py 复制代码
os.rmdir(path)
os.removedirs(path)
  • rmdir():删除空目录;
  • removedirs():递归删除多级空目录。

📘 示例

py 复制代码
os.rmdir("test_folder")
os.removedirs("a/b/c")

5️⃣ 列出目录内容

复制代码
os.listdir(path)

📘 示例

复制代码
files = os.listdir(".")  # 列出当前目录所有文件和子目录
print(files)

🧾 输出

复制代码
['mlp_min.ipynb', 'part_function.ipynb', 'README.md', '深度神经网络技术详解.md']

6️⃣ 重命名文件或目录

py 复制代码
os.rename(old_name, new_name)

📘 示例

py 复制代码
os.rename("data.txt", "data_backup.txt")

7️⃣ 删除文件

py 复制代码
os.remove(path)

📘 示例

复制代码
os.remove("data_backup.txt")

8️⃣ 判断文件或目录是否存在

复制代码
os.path.exists(path)

📘 示例

py 复制代码
if os.path.exists("example.txt"):
    print("文件存在")
else:
    print("文件不存在")

9️⃣ 判断路径类型

复制代码
os.path.isfile(path)
os.path.isdir(path)

📘 示例

py 复制代码
print(os.path.isfile("data.txt"))  # True
print(os.path.isdir("images"))     # True

🔟 获取文件的绝对路径

复制代码
os.path.abspath(path)

📘 示例

复制代码
print(os.path.abspath("data.txt"))

1️⃣1️⃣ 获取文件路径的目录与文件名

复制代码
os.path.dirname(path)
os.path.basename(path)

📘 示例

py 复制代码
path = "C:/Users/lang/Desktop/data.txt"
print("目录名:", os.path.dirname(path))
print("文件名:", os.path.basename(path))

🧾 输出

复制代码
目录名: C:/Users/lang/Desktop
文件名: data.txt

1️⃣2️⃣ 拼接路径

py 复制代码
os.path.join(path1, path2, ...)

📘 示例

py 复制代码
folder = "C:/Users/lang/Desktop"
filename = "data.txt"
full_path = os.path.join(folder, filename)
print(full_path)

🧾 输出

复制代码
C:\Users\lang\Desktop\data.txt

1️⃣3️⃣ 拆分路径

复制代码
os.path.split(path)

📘 示例

py 复制代码
print(os.path.split("C:/Users/lang/Desktop/data.txt"))

🧾 输出

复制代码
('C:/Users/lang/Desktop', 'data.txt')

1️⃣4️⃣ 获取文件大小

复制代码
os.path.getsize(path)

📘 示例

复制代码
print(os.path.getsize("data.txt"), "字节")

🧾 输出

复制代码
1234 字节

1️⃣5️⃣ 遍历目录树(递归)

复制代码
os.walk(top)

返回 (root, dirs, files) 元组,可用于递归访问文件夹。

📘 示例

py 复制代码
for root, dirs, files in os.walk("."):
    print("当前路径:", root)
    print("子目录:", dirs)
    print("文件:", files)
    print("------------")

🧾 输出

复制代码
当前路径: .
子目录: ['images', 'docs']
文件: ['main.py', 'README.md']
------------
当前路径: .\images
子目录: []
文件: ['logo.png', 'icon.jpg']
------------

三、综合实战案例

📘 任务:遍历指定文件夹,找出所有 .txt 文件,并打印它们的绝对路径与大小

py 复制代码
import os

def find_txt_files(root_dir):
    for root, dirs, files in os.walk(root_dir):
        for f in files:
            if f.endswith(".txt"):
                file_path = os.path.join(root, f)
                size = os.path.getsize(file_path)
                print(f"{file_path}  ({size} bytes)")

find_txt_files(".")

🧾 输出示例

复制代码
.\notes.txt  (1345 bytes)
.\logs\2025_log.txt  (5678 bytes)

四、总结表格

功能 方法 说明
获取当前目录 os.getcwd() 获取路径
改变目录 os.chdir(path) 切换工作目录
创建目录 os.mkdir() / os.makedirs() 新建文件夹
删除目录 os.rmdir() / os.removedirs() 删除空目录
列出内容 os.listdir() 遍历文件夹
重命名 os.rename() 文件改名
删除文件 os.remove() 删除文件
判断存在 os.path.exists() 检查路径
判断类型 os.path.isfile() / os.path.isdir() 文件或目录
拼接路径 os.path.join() 合成路径
拆分路径 os.path.split() 分离目录与文件
获取绝对路径 os.path.abspath() 转换绝对路径
获取大小 os.path.getsize() 获取文件大小
遍历目录树 os.walk() 递归扫描

python学习专栏导航
(1)100天python从入门到拿捏《Python 3简介》
(2)100天python从入门到拿捏《python应用前景》
(3)100天python从入门到拿捏《数据类型》
(4)100天python从入门到拿捏《运算符》
(5)100天python从入门到拿捏《流程控制语句》
(6)100天python从入门到拿捏《推导式》
(7)100天python从入门到拿捏《迭代器和生成器》
(8)100天python从入门到拿捏《函数和匿名函数》
(9)100天python从入门到拿捏《装饰器》
(10)100天python从入门到拿捏《Python中的数据结构与自定义数据结构》
(11)100天python从入门到拿捏《模块》
(12)100天python从入门到拿捏《文件操作》

相关推荐
全栈陈序员13 分钟前
【Python】基础语法入门(二十)——项目实战:从零构建命令行 To-Do List 应用
开发语言·人工智能·python·学习
jcsx16 分钟前
如何将django项目发布为https
python·https·django
猫头虎18 分钟前
GoLand 2025.3 最新变化:值得更新吗?
ide·windows·macos·pycharm·编辑器·intellij-idea·idea
Filotimo_25 分钟前
Spring Data JPA 方法名查询特性的使用
java·开发语言·windows
岁月宁静36 分钟前
LangGraph 技术详解:基于图结构的 AI 工作流与多智能体编排框架
前端·python·langchain
百锦再37 分钟前
京东云鼎入驻方案解读——通往协同的“高架桥”与“快速路”
android·java·python·rust·django·restful·京东云
岁月宁静38 分钟前
LangChain 技术栈全解析:从模型编排到 RAG 实战
前端·python·langchain
啊哈哈哈哈啊有1 小时前
导出树形结构,excel
java·windows·excel
Nick_zcy1 小时前
基于Vue和Python的羽毛球拍智能推荐系统, 从“不会选羽毛球拍”到“选对拍”的一站式小工具
前端·vue.js·python·算法·推荐算法
冰冰菜的扣jio1 小时前
理解类加载过程
开发语言·python