前言:今天主要学习了两个方面的基础知识--元组和OS模块。理解和应用好这两个方面将为我们后续进阶深度学习打下了坚实的基础。
一、元组
元组的特点:
-
有序,可以重复,这一点和列表一样
-
元组中的元素不能修改,这一点非常重要,深度学习场景中很多参数、形状定义好了确保后续不能被修改。
对于元组方面基础的一些用法在此我们不做过多的赘述,我们主要来讲一讲其和列表结合起来在管道工程中的应用。
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}")