【DAY28】元组和os模块

@浙大疏锦行

作业:对自己电脑的不同文件夹利用相关知识操作一下,理解os路径。

复制代码
import os  # 导入os模块,用于路径和文件操作

# ===================== 知识点1:元组存储固定的路径配置(利用元组不可变特性) =====================
# 定义元组存储多个待操作的文件夹名称(不可修改,适合固定配置)
target_dirs = (
    "test_dir_1",  # 测试目录1
    "test_dir_2/sub_dir",  # 多级测试目录2
    "test_dir_3"   # 测试目录3
)
# 定义元组存储需要忽略的文件类型(比如临时文件)
ignore_file_types = (".tmp", ".cache", ".log")

# ===================== 知识点2:基础路径操作(结合元组接收拆分结果) =====================
# 1. 获取当前工作目录
current_dir = os.getcwd()
print(f"【当前工作目录】: {current_dir}\n")

# 2. os.path.split():拆分路径为"目录+最后一级名称",返回值是元组
split_result = os.path.split(current_dir)
print(f"【路径拆分结果(元组)】: {split_result}")
print(f"  - 父目录: {split_result[0]}")  # 元组索引取值
print(f"  - 当前目录名: {split_result[1]}\n")

# ===================== 知识点3:遍历元组中的路径,执行创建/检查 =====================
for dir_name in target_dirs:
    # 拼接绝对路径(os.path.join自动适配系统分隔符:Windows\ / Linux/macOS)
    abs_dir_path = os.path.join(current_dir, dir_name)
    
    # 检查路径是否存在
    if not os.path.exists(abs_dir_path):
        # 创建多级目录(os.makedirs支持嵌套目录,os.mkdir仅支持单级)
        os.makedirs(abs_dir_path)
        print(f"✅ 目录创建成功: {abs_dir_path}")
    else:
        print(f"ℹ️  目录已存在: {abs_dir_path}")
    
    # 验证是否为目录(os.path.isdir)
    is_dir = os.path.isdir(abs_dir_path)
    print(f"   是否为目录: {is_dir}\n")

# ===================== 知识点4:遍历目录内容,用元组汇总文件信息 =====================
# 选第一个测试目录遍历内容
test_dir = os.path.join(current_dir, target_dirs[0])
print(f"【遍历目录内容】: {test_dir}")

# 遍历目录下的所有文件/子目录
for item in os.listdir(test_dir):
    # 拼接item的绝对路径
    item_path = os.path.join(test_dir, item)
    
    # 用元组存储item的关键信息(路径、类型、大小)
    item_info = (
        item_path,  # 路径
        "目录" if os.path.isdir(item_path) else "文件",  # 类型
        os.path.getsize(item_path)  # 大小(字节)
    )
    
    # 过滤掉忽略类型的文件(利用元组的成员判断)
    if os.path.isfile(item_path) and any(item.endswith(ext) for ext in ignore_file_types):
        print(f"🚫 忽略文件: {item_info[0]}")
    else:
        print(f"📄 项目信息: 路径={item_info[0]}, 类型={item_info[1]}, 大小={item_info[2]}字节")

# ===================== 知识点5:元组汇总所有目标路径的绝对路径 =====================
# 生成所有目标目录的绝对路径元组(元组推导式)
abs_target_dirs = tuple(os.path.join(current_dir, dir_name) for dir_name in target_dirs)
print(f"\n【所有目标目录的绝对路径(元组)】: {abs_target_dirs}")

# 元组不可变特性验证(尝试修改会报错,注释掉可测试)
# abs_target_dirs[0] = "new_path"  # 执行会报TypeError: 'tuple' object does not support item assignment
os 模块路径核心操作
函数 作用
os.getcwd() 获取当前工作目录
os.path.join() 拼接路径(自动适配系统分隔符)
os.path.split() 拆分路径为 "父目录 + 最后一级名称"(元组)
os.path.exists() 检查路径是否存在
os.makedirs() 创建多级目录(支持嵌套)
os.path.isdir() 判断是否为目录
os.listdir() 列出目录下的所有文件 / 子目录
os.path.getsize() 获取文件 / 目录大小(字节)
相关推荐
玄同7655 小时前
从 0 到 1:用 Python 开发 MCP 工具,让 AI 智能体拥有 “超能力”
开发语言·人工智能·python·agent·ai编程·mcp·trae
小瑞瑞acd5 小时前
【小瑞瑞精讲】卷积神经网络(CNN):从入门到精通,计算机如何“看”懂世界?
人工智能·python·深度学习·神经网络·机器学习
火车叼位6 小时前
也许你不需要创建.venv, 此规范使python脚本自备依赖
python
火车叼位6 小时前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior6 小时前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Katecat996636 小时前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
玩大数据的龙威7 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891317 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep7 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手7 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储