DAY28 元组和OS模块

前言:今天主要学习了两个方面的基础知识--元组和OS模块。理解和应用好这两个方面将为我们后续进阶深度学习打下了坚实的基础。

一、元组

元组的特点:

  1. 有序,可以重复,这一点和列表一样

  2. 元组中的元素不能修改,这一点非常重要,深度学习场景中很多参数、形状定义好了确保后续不能被修改。

对于元组方面基础的一些用法在此我们不做过多的赘述,我们主要来讲一讲其和列表结合起来在管道工程中的应用。

3.示例

管道工程中pipeline类接收的是一个包含多个小元组的 列表 作为输入。

可以这样理解这个结构

(1) 列表 \[\]: 定义了步骤执行的先后顺序。Pipeline 会按照列表中的顺序依次处理数据。之所以用列表,是未来可以对这个列表进行修改。

(2) 元组 (): 用于将每个步骤的名称和处理对象捆绑在一起。名称用于在后续访问或设置参数时引用该步骤,而对象则是实际执行数据转换或模型训练的工具。固定了操作名+操作

示例代码:

python 复制代码
# 管道按顺序执行以下步骤:
#    - StandardScaler(): 标准化数据(移除均值并缩放到单位方差)
#    - LogisticRegression(): 逻辑回归分类器
pipeline = Pipeline([
    ('scaler', StandardScaler()),
    ('logreg', LogisticRegression())
])

二、OS模块

好的代码组织和有效的文件管理是大型深度学习项目的基石。os 模块是实现这些目标的重要组成部分。

一些基本操作:

1、获取当前工作目录

示例代码:

python 复制代码
import os
# os是系统内置模块,无需安装
os.getcwd() # get current working directory 获取当前工作目录的绝对路径

2、获取当前工作目录下的文件列表

示例代码:

python 复制代码
os.listdir() # list directory 获取当前工作目录下的文件列表

3、环境变量方法

示例代码:

python 复制代码
# os.environ 表现得像一个字典,包含所有的环境变量
os.environ
# 使用 .items() 方法可以方便地同时获取变量名(键)和变量值,之前已经提过字典的items()方法,可以取出来键和值
# os.environ是可迭代对象

for variable_name, value in os.environ.items():
  # 直接打印出变量名和对应的值
  print(f"{variable_name}={value}")

# 你也可以选择性地打印总数
print(f"\n--- 总共检测到 {len(os.environ)} 个环境变量 ---")

4.目录树

os.walk() 是 Python os 模块中一个非常有用的函数,它用于遍历(或称"行走")一个目录树。其遍历过程采取的是深度优先策略。

其每次遍历主要返回三个顺序的参数:

当前访问目录 (dirpath)

子目录列表 (dirnames)

文件列表 (filenames)

以下面这个目录结构为例:

my_project/

├── data/

│ ├── processed/ ← 空文件夹

│ └── raw/

│ └── data1.csv

├── src/

│ ├── models/

│ │ └── model_a.py

│ └── utils.py

├── main.py

└── README.md

访问流程:

步骤1: 到达 my_project

↓

看到: 子目录='data', 'src', 文件='main.py', 'README.md'

先进入第一个子目录 'data'

步骤2: 到达 my_project/data

↓

看到: 子目录='processed', 'raw', 文件=\[\]

先进入第一个子目录 'processed'

步骤3: 到达 my_project/data/processed

↓

看到: 子目录=\[\], 文件=\[\]

这是死胡同,退回到 my_project/data

步骤4: 还在 my_project/data

↓

进入下一个子目录 'raw'

步骤5: 到达 my_project/data/raw

↓

看到: 子目录=\[\], 文件='data1.csv'

这是死胡同,退回到 my_project/data

但 my_project/data 的子目录都探索完了,退回到 my_project

步骤6: 回到 my_project

↓

进入下一个子目录 'src'

步骤7: 到达 my_project/src

↓

看到: 子目录='models', 文件='utils.py'

进入子目录 'models'

步骤8: 到达 my_project/src/models

↓

看到: 子目录=\[\], 文件='model_a.py'

探索完成!

示例代码:

python 复制代码
import os

start_directory = os.getcwd() # 假设这个目录在当前工作目录下

print(f"--- 开始遍历目录: {start_directory} ---")

for dirpath, dirnames, filenames in os.walk(start_directory):
    print(f"  当前访问目录 (dirpath): {dirpath}")
    print(f"  子目录列表 (dirnames): {dirnames}")
    print(f"  文件列表 (filenames): {filenames}")

@浙大疏锦行

相关推荐
破茧蝴蝶7 小时前
Python分布式爬虫完整教程
开发语言·python
benchmark_cc7 小时前
量化系统架构设计:为什么应该将数据获取与策略逻辑解耦?
python·数据分析·pandas·量化交易·股票数据·quantdash
凤山老林7 小时前
Spring Boot 启动冲刺:耗时剖析、懒加载策略与事件驱动初始化优化
spring boot·后端·python
小白快快跑哦7 小时前
python-字符串全解(六):正则表达式-逻辑运算或
python·正则表达式·字符串·逻辑运算
Thinker QAQ8 小时前
并发编程(九):BlockingQueue 与 Channel——语言层的原子性、可见性与有序性
java·python·go·并发编程·channel·blockingqueue·message passing
道满科技8 小时前
Function Calling 参数总出错?只修参数就行
linux·windows·python
霸道流氓气质9 小时前
RAG 可观测性与生产监控实战:四层遥测模型、五大仪表盘与 OpenTelemetry 全链路追踪的 Java 生产级实现
java·人工智能·python
ch62311 小时前
《AI 辅助编程实战:从零跑通一个 Excel 报表生成脚本的踩坑与复盘》
人工智能·python
import_random11 小时前
[python]conda和pip(区别和联系2)
python
Aurorar0rua11 小时前
CS50 x 2024 Notes Python - 01
开发语言·python·学习方法