DAY 24 元组和OS模块

一、元组

元组的特点:

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

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

        很多流行的 ML/DL 库(如 TensorFlow, PyTorch, NumPy)在其 API 中都广泛使用了元组来表示形状、配置等。

        可以看到,元组最重要的功能是在列表之上,增加了不可修改这个需求。

1、元组的创建

(1)

my_tuple1 = (1, 2, 3)
my_tuple2 = ('a', 'b', 'c')
my_tuple3 = (1, 'hello', 3.14, [4, 5])  # 可以包含不同类型的元素
print(my_tuple1)
print(my_tuple2)
print(my_tuple3)

输出:

(1, 2, 3)
('a', 'b', 'c')
(1, 'hello', 3.14, [4, 5])

(2)创建可省略括号

# 可以省略括号
my_tuple4 = 10, 20,'fifty'  # 逗号是关键
print(my_tuple4)
print(type(my_tuple4))

输出:

(10, 20, 'fifty')
<class 'tuple'>

(3)创建空元祖

# 创建空元祖
enpty_tuple = ()
# 或使用 tuple() 函数
enpty_tuple2 = tuple()
print(enpty_tuple)
print(enpty_tuple2)

输出:

()
()

2、元组的常见用法

(1)元组的索引

# 元组的索引
my_tuple = (1, 4, 'a', 'v', 'g')
print(my_tuple[0])  # 第一个元素
print(my_tuple[2])  # 第三个元素
print(my_tuple[-1])  # 最后一个元素

输出:

1
a
g

(2)元组的切片

# 元组的切片
my_tuple = (0, 1, 2, 3, 4, 5, 6)
print(my_tuple[1:4])  # 输出从索引1到索引3的元素,左闭右开
print(my_tuple[:3])  # 输出从索引0到索引2的元素
print(my_tuple[3:])  # 输出从索引3到最后的元素
print(my_tuple[::2])  # 从第一个元素开始,每隔一个元素输出一个

输出:

(1, 2, 3)
(0, 1, 2)
(3, 4, 5, 6)
(0, 2, 4, 6)

(3)获取元祖长度

# 获取元祖长度
my_tuple = (1, 2, 3, 4)
print(len(my_tuple))

输出:

4

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

可以这样理解这个结构:

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

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

不用字典因为字典是无序的。

利用管道训练自带的鸢尾花数据集:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 自带的鸢尾花数据集
# 1.加载数据
iris = load_iris()
X = iris.data
y = iris.target

# 2.划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)

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

# 4.训练模型
pipeline.fit(X_train, y_train)

# 5.预测
y_pred = pipeline.predict(X_test)

# 6.评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f"模型在测试集上的准确率:{accuracy:.2f}")

输出:

模型在测试集上的准确率:1.00

二、可迭代对象

        可迭代对象 (Iterable) 是 Python 中一个非常核心的概念。简单来说,一个可迭代对象就是指那些能够依次返回其成员(元素)的对象,让你可以在一个循环(比如 for 循环)中遍历它们

Python 中有很多内置的可迭代对象,目前我们见过的类型包括:

  • 序列类型 (Sequence Types):

    • list(列表)

    • tuple (元组)

    • str (字符串)

    • range (范围)

  • 集合类型 (Set Types):

    • set (集合)

  • 字典类型 (Mapping Types):

    • dict (字典) - 迭代时返回键 (keys)

  • 文件对象 (File objects)

  • 生成器 (Generators)

  • 迭代器 (Iterators) 本身

(1)列表(list)

# 列表(list)
print("迭代列表:")
my_list = [1, 2, 3, 4, 5]
for item in my_list:
  print(item)

输出:

# 元组 (tuple)
print("迭代元祖:")
my_tuple = ('a', 'b', 'c')
for item in my_tuple:
  print(item)

(2)元组 (tuple)

# 元组 (tuple)
print("迭代元祖:")
my_tuple = ('a', 'b', 'c')
for item in my_tuple:
  print(item)

输出:

迭代元祖:
a
b
c

(3)字符串(str)

# 字符串(str)
print("迭代字符串:")
my_string = "hello"
for char in my_string:
  print(char)

输出:

迭代字符串:
h
e
l
l
o

(4)range (范围)

# range (范围)
print("迭代 range:")
for number in range(5):
  print(number)

输出:

迭代 range:
0
1
2
3
4

(5)集合类型(Set types)

# 集合类型(Set types)

# 集合(set) - 注意集合内元素是无序的,所以每次迭代的顺序可能不同
print("迭代集合:")
my_set = {3, 1, 4, 9, 6}
for item in my_set:
    print(item)

输出:

迭代集合:
1
3
4
6
9

(6)字典(dict)

# 字典(dict) - 默认 迭代时返回键值对中的键(keys)
print("迭代字典 (默认迭代键):")
my_dict = {'name': 'alibaba', 'age': 18, 'city': 'beijing'}
for key in my_dict:
  print(key)

# 迭代字典的值(values)
print("\n迭代字典的值(values):")
for value in my_dict.values():
  print(value)  

# 迭代字典的键值对(items)
print("\n迭代字典的键值对:")
for key, value in my_dict.items():
  print(f"key:{key}, value:{value}")  

输出:

迭代字典 (默认迭代键):
name
age
city

迭代字典的值(values):
alibaba
18
beijing

迭代字典的键值对:
key:name, value:alibaba
key:age, value:18
key:city, value:beijing

三、OS 模块

        随着深度学习项目变得越来越大、数据量越来越多、代码结构越来越复杂,你会越来越频繁地用到 os 模块来管理文件、目录、路径,以及进行一些基本的操作系统交互。虽然深度学习的核心在于模型构建和训练,但数据和模型的有效管理是项目成功的关键环节,而 os 模块为此提供了重要的工具。

        在简单的入门级项目中,你可能只需要使用 pd.read_csv() 加载数据,而不需要直接操作文件路径。但是,当你开始处理图像数据集、自定义数据加载流程、保存和加载复杂的模型结构时,os 模块就会变得非常有用。

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

# os是系统内置模块,无需安装
import os

(1)获取当前工作目录

os.getcwd()  # get current working directory 

输出:

'c:\\Users\\acstdm\\Desktop\\python60-days-challenge-master\\py60-stud'

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

os.listdir()  # list directory

(3)目录拼接

# 我们使用 r'' 原始字符串,而不用双反斜杠 \\,因为 \ 会涉及到转义问题
path_a = r'C:\Users\YourUsername\Documents' # 这个写法是写给python解释器看,他只会读取引号内的内容,不用在意r的存在会不会影响拼接
path_b = 'MyProjectData'
file = 'results.csv'

# 使用使用 os.path.join 将它们安全的拼接起来,会自动使用 Windows 的反斜杠 '\' 作为分隔符
file_path = os.path.join(path_a, path_b, file)
file_path

输出:

'C:\\Users\\YourUsername\\Documents\\MyProjectData\\results.csv'

(4)环境变量方法 os.environ

# os.environ 表现的像一个字典,包含所有的环境变量
os.environ

输出:

environ{'ALLUSERSPROFILE': 'C:\\ProgramData',
        'APPCODE_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\appcode.vmoptions',
        'APPDATA': 'C:\\Users\\acstdm\\AppData\\Roaming',
        'APP_REGION': 'CN',
        'ARMCONF': 'D:\\Software\\ADS\\ads.1.2\\BIN',
        'ARMDLL': 'D:\\Software\\ADS\\ads.1.2\\BIN',
        'ARMHOME': 'D:\\Software\\ADS\\ads.1.2',
        'ARMINC': 'D:\\Software\\ADS\\ads.1.2\\INCLUDE',
        'ARMLIB': 'D:\\Software\\ADS\\ads.1.2\\LIB',
        'CATALINA_BASE': 'D:\\Software\\IDEA\\Javaee\\apache-tomcat-9.0.68',
        'CATALINA_HOME': 'D:\\Software\\IDEA\\Javaee\\apache-tomcat-9.0.68',
        'CHROME_CRASHPAD_PIPE_NAME': '\\\\.\\pipe\\crashpad_79100_IFMLDKMXKMRKKEYB',
        'CLASSPATH': '.;E:\\Graduate\\jdk1.8\\lib;E:\\Graduate\\jdk1.8\\lib\\tools.jar',
        'CLION_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\clion.vmoptions',
        'CLOUDIDE_APISERVER_BASE_URL': 'https://api.marscode.cn',
        'CLOUDIDE_PROVIDER_REGION': 'cn',
        'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files',
        'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files',
        'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files',
        'COMPUTERNAME': 'LAPTOP-62E2IUIP',
        'COMSPEC': 'C:\\Windows\\system32\\cmd.exe',
        'CONDA_DEFAULT_ENV': 'py60',
        'CONDA_EXE': 'E:\\Software\\MiniConda\\Scripts\\conda.exe',
        'CONDA_PREFIX': 'E:\\CondaEnvs\\envs\\py60',
        'CONDA_PROMPT_MODIFIER': '(py60) ',
        'CONDA_PYTHON_EXE': 'E:\\Software\\MiniConda\\python.exe',
        'CONDA_ROOT': 'E:\\Software\\MiniConda',
        'CONDA_SHLVL': '1',
        'DATAGRIP_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\datagrip.vmoptions',
        'DATASPELL_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\dataspell.vmoptions',
        'DEVECOSTUDIO_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\devecostudio.vmoptions',
        'DOKANLIBRARY2': 'C:\\Program Files\\Dokan\\DokanLibrary-2.0.6\\',
        'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData',
        'EFC_14492': '1',
        'ELECTRON_FORCE_IS_PACKAGED': 'true',
        'ELECTRON_RUN_AS_NODE': '1',
        'ERLANG_HOME': 'E:\\WEB\\Erlang\\Erlang OTP',
        'GATEWAY_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\gateway.vmoptions',
        'GOLAND_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\goland.vmoptions',
        'HOMEDRIVE': 'C:',
        'HOMEPATH': '\\Users\\acstdm',
        'ICUBE_APP_VERSION': '0.6.1',
        'ICUBE_BUILD_TIME': '2025-06-05T11:40:46.728Z',
        'ICUBE_BUILD_VERSION': '1.0.13859',
        'ICUBE_CODEMAIN_SESSION': '7d7ace67-c926-436d-9a90-e1664cde5880',
        'ICUBE_ELECTRON_PATH': 'E:\\Software\\TraeIDE\\Trae CN\\Trae CN.exe',
        'ICUBE_ENABLE_MARSCODE_NLS': '1',
        'ICUBE_IS_ELECTRON': 'true',
        'ICUBE_MACHINE_ID': '91feaaaee2a586100cfedec42c84016daa524b833f4bb02ef3aa7a49e803337f',
        'ICUBE_MARSCODE_VERSION': '1.0.13859',
        'ICUBE_PRODUCT_PROVIDER': 'Yinli',
        'ICUBE_PROVIDER': 'Yinli',
        'ICUBE_PROXY_HOST': '127.0.0.1',
        'ICUBE_PROXY_PORT': '51000',
        'ICUBE_QUALITY': 'stable',
        'ICUBE_USE_IPV6': 'false',
        'ICUBE_VSCODE_VERSION': '1.98.2',
        'IDEA_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\idea.vmoptions',
        'JAVA_HOME': 'E:\\Graduate\\jdk1.8',
        'JETBRAINSCLIENT_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\jetbrainsclient.vmoptions',
        'JETBRAINS_CLIENT_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\jetbrains_client.vmoptions',
        'JPY_INTERRUPT_EVENT': '1692',
        'LOCALAPPDATA': 'C:\\Users\\acstdm\\AppData\\Local',
        'LOGONSERVER': '\\\\LAPTOP-62E2IUIP',
        'MAVEN_HOME': 'D:\\Software\\IDEA\\Javaee\\apache-maven-3.8.7',
        'MYSQL_HOME': 'D:\\Software\\Mysql8\\mysql-8.0.32-winx64',
        'NUMBER_OF_PROCESSORS': '20',
        'NVM_HOME': 'E:\\Graduate\\Nvm\\nvm',
        'NVM_SYMLINK': 'E:\\Graduate\\Nvm\\nvm\\nodejs',
        'OLLAMA_MODELS': 'E:\\deepseek_model',
        'ONEDRIVE': 'C:\\Users\\acstdm\\OneDrive',
        'ORIGINAL_XDG_CURRENT_DESKTOP': 'undefined',
        'OS': 'Windows_NT',
        'PATH': 'e:\\CondaEnvs\\envs\\py60;E:\\CondaEnvs\\envs\\py60;E:\\CondaEnvs\\envs\\py60\\Library\\mingw-w64\\bin;E:\\CondaEnvs\\envs\\py60\\Library\\usr\\bin;E:\\CondaEnvs\\envs\\py60\\Library\\bin;E:\\CondaEnvs\\envs\\py60\\Scripts;E:\\CondaEnvs\\envs\\py60\\bin;E:\\Software\\MiniConda\\condabin;c:\\Users\\acstdm\\.trae-cn\\sdks\\workspaces\\27f99420\\versions\\node\\current;c:\\Users\\acstdm\\.trae-cn\\sdks\\versions\\node\\current;D:\\Software\\python\\Scripts;E:\\Graduate\\jdk1.8\\bin;D:\\Software\\ADS\\ads.1.2\\bin;C:\\ProgramData\\Oracle\\Java\\javapath;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0;C:\\Windows\\System32\\OpenSSH;C:\\Program Files (x86)\\NVIDIA Corporation\\PhysX\\Common;C:\\Program Files\\dotnet;D:\\Software\\Pycharm\\python;D:\\Software\\IDEA\\Javaee\\apache-tomcat-9.0.68\\bin;D:\\Software\\IDEA\\Javaee\\apache-maven-3.8.7\\bin;D:\\Software\\Mysql8\\mysql-8.0.32-winx64;D:\\Software\\Mysql8\\mysql-8.0.32-winx64\\bin;"D:\\Software\\IDEA\\Javaee\\apache-tomcat-9.0.68lib;D:\\Software\\IDEA\\Javaee\\apache-tomcat-9.0.68in";E:\\Software\\putty;E:\\WEB\\Redis;E:\\WEB\\Erlang\\Erlang OTP\\bin;E:\\WEB\\node;E:\\Graduate\\MongoDB\\Server\\4.2\\bin;E:\\Software\\Git\\Git\\bin;E:\\Software\\Git\\Git\\mingw64\\libexec\\git-core;E:\\Graduate\\Nvm\\nvm;E:\\Graduate\\Nvm\\nvm\\nodejs;C:\\Program Files\\nodejs;E:\\WEB\\node\\node_cache;E:\\Graduate\\jdk1.8\\jre\\bin;D:\\Software\\IDEA\\Javaee\\apache-maven-3.8.1\\bin;D:\\Software\\ffmpeg-7.1\\bin;C:\\Program Files\\NVIDIA Corporation\\NVIDIA app\\NvDLISR;E:\\Software\\MiniConda;E:\\Software\\MiniConda\\Scripts;E:\\Software\\MiniConda\\Library\\bin;E:\\Software\\Microsoft VS Code\\bin;e:\\Software\\TraeIDE\\Trae CN\\bin;C:\\Users\\acstdm\\AppData\\Local\\Programs\\Python\\Python38\\Scripts;C:\\Users\\acstdm\\AppData\\Local\\Programs\\Python\\Python38;D:\\Software\\python\\Scripts;D:\\Software\\python;C:\\Users\\acstdm\\AppData\\Local\\Microsoft\\WindowsApps;D:\\Software\\Pycharm\\PyCharm 2023.1\\bin;.;E:\\Graduate\\Nvm\\nvm;E:\\Graduate\\Nvm\\nvm\\nodejs;E:\\Software\\WebStrom\\WebStorm 2023.3.4\\bin;.;C:\\Users\\acstdm\\AppData\\Roaming\\npm;E:\\Software\\Ollama;e:\\Software\\TraeIDE\\Trae CN\\resources\\app\\bin\\lib',
        'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC',
        'PHPSTORM_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\phpstorm.vmoptions',
        'PROCESSOR_ARCHITECTURE': 'AMD64',
        'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 154 Stepping 3, GenuineIntel',
        'PROCESSOR_LEVEL': '6',
        'PROCESSOR_REVISION': '9a03',
        'PROGRAMDATA': 'C:\\ProgramData',
        'PROGRAMFILES': 'C:\\Program Files',
        'PROGRAMFILES(X86)': 'C:\\Program Files (x86)',
        'PROGRAMW6432': 'C:\\Program Files',
        'PROMPT': '(py60) $P$G',
        'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules',
        'PUBLIC': 'C:\\Users\\Public',
        'PYCHARM': 'D:\\Software\\Pycharm\\PyCharm 2023.1\\bin;',
        'PYCHARM_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\pycharm.vmoptions',
        'PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING': '1',
        'PYTHONIOENCODING': 'utf-8',
        'PYTHONUNBUFFERED': '1',
        'PYTHONUTF8': '1',
        'PYTHON_FROZEN_MODULES': 'on',
        'RIDER_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\rider.vmoptions',
        'RUBYMINE_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\rubymine.vmoptions',
        'SESSIONNAME': 'Console',
        'SSL_CERT_FILE': 'E:\\CondaEnvs\\envs\\py60\\Library\\ssl\\cacert.pem',
        'STUDIO_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\studio.vmoptions',
        'SYSTEMDRIVE': 'C:',
        'SYSTEMROOT': 'C:\\Windows',
        'TEMP': 'C:\\Users\\acstdm\\AppData\\Local\\Temp',
        'TMP': 'C:\\Users\\acstdm\\AppData\\Local\\Temp',
        'USERDOMAIN': 'LAPTOP-62E2IUIP',
        'USERDOMAIN_ROAMINGPROFILE': 'LAPTOP-62E2IUIP',
        'USERNAME': 'acstdm',
        'USERPROFILE': 'C:\\Users\\acstdm',
        'VSCODE_BUILTIN_EXTENSIONS_PATH': 'e:\\Software\\TraeIDE\\Trae CN\\resources\\app\\extensions',
        'VSCODE_CODE_CACHE_PATH': 'C:\\Users\\acstdm\\AppData\\Roaming\\Trae CN\\CachedData\\2c8f55ba31b096e35c341364330c33f4047fc6c3',
        'VSCODE_CRASH_REPORTER_PROCESS_TYPE': 'extensionHost',
        'VSCODE_CWD': 'E:\\Software\\TraeIDE\\Trae CN',
        'VSCODE_ENV_PREPEND': 'PATH=c\\x3a\\Users\\acstdm\\.trae-cn\\sdks\\workspaces\\27f99420\\versions\\node\\current;c\\x3a\\Users\\acstdm\\.trae-cn\\sdks\\versions\\node\\current;',
        'VSCODE_ESM_ENTRYPOINT': 'vs/workbench/api/node/extensionHostProcess',
        'VSCODE_EXTENSIONS_PATH': 'c:\\Users\\acstdm\\.trae-cn\\extensions',
        'VSCODE_HANDLES_UNCAUGHT_ERRORS': 'true',
        'VSCODE_IPC_HOOK': '\\\\.\\pipe\\eae8c8fe-1.98.2-main-sock',
        'VSCODE_NLS_CONFIG': '{"userLocale":"zh-cn","osLocale":"zh-cn","resolvedLanguage":"zh-cn","defaultMessagesFile":"E:\\\\Software\\\\TraeIDE\\\\Trae CN\\\\resources\\\\app\\\\out\\\\nls.zh-cn.messages.json","locale":"zh-cn","availableLanguages":{}}',
        'VSCODE_PID': '79100',
        'VSCODE_RUN_IN_ELECTRON': 'true',
        'WEBIDE_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\webide.vmoptions',
        'WEBSTORM': 'E:\\Software\\WebStrom\\WebStorm 2023.3.4\\bin;',
        'WEBSTORM_VM_OPTIONS': 'E:\\BaiduNetdiskDownload\\video\\Crack\\jetbra\\vmoptions\\webstorm.vmoptions',
        'WINDIR': 'C:\\Windows',
        'XIUMASTER_V1_BUTTON_HOTKEY': '16777227',
        'ZES_ENABLE_SYSMAN': '1',
        '_CONDA_OLD_CHCP': '936',
        '__CONDA_OPENSLL_CERT_FILE_SET': '"1"',
        'PYDEVD_USE_FRAME_EVAL': 'NO',
        'TERM': 'xterm-color',
        'CLICOLOR': '1',
        'FORCE_COLOR': '1',
        'CLICOLOR_FORCE': '1',
        'PAGER': 'cat',
        'GIT_PAGER': 'cat',
        'MPLBACKEND': 'module://matplotlib_inline.backend_inline',
        'KMP_DUPLICATE_LIB_OK': 'True',
        'KMP_INIT_AT_FORK': 'FALSE'}

(5) .items() 方法

# 使用 .items() 方法可以方便的同时获取变量名(键)和变量值,之前已经提过字典的items()方法
# os.environ是可迭代对象

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

# 打印总数
print(f"\n--- 总共检测到 {len(os.environ)} 个环境变量 ---")

输出:

ALLUSERSPROFILE:C:\ProgramData。
APPCODE_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\appcode.vmoptions。
APPDATA:C:\Users\acstdm\AppData\Roaming。
APP_REGION:CN。
ARMCONF:D:\Software\ADS\ads.1.2\BIN。
ARMDLL:D:\Software\ADS\ads.1.2\BIN。
ARMHOME:D:\Software\ADS\ads.1.2。
ARMINC:D:\Software\ADS\ads.1.2\INCLUDE。
ARMLIB:D:\Software\ADS\ads.1.2\LIB。
CATALINA_BASE:D:\Software\IDEA\Javaee\apache-tomcat-9.0.68。
CATALINA_HOME:D:\Software\IDEA\Javaee\apache-tomcat-9.0.68。
CHROME_CRASHPAD_PIPE_NAME:\\.\pipe\crashpad_79100_IFMLDKMXKMRKKEYB。
CLASSPATH:.;E:\Graduate\jdk1.8\lib;E:\Graduate\jdk1.8\lib\tools.jar。
CLION_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\clion.vmoptions。
CLOUDIDE_APISERVER_BASE_URL:https://api.marscode.cn。
CLOUDIDE_PROVIDER_REGION:cn。
COMMONPROGRAMFILES:C:\Program Files\Common Files。
COMMONPROGRAMFILES(X86):C:\Program Files (x86)\Common Files。
COMMONPROGRAMW6432:C:\Program Files\Common Files。
COMPUTERNAME:LAPTOP-62E2IUIP。
COMSPEC:C:\Windows\system32\cmd.exe。
CONDA_DEFAULT_ENV:py60。
CONDA_EXE:E:\Software\MiniConda\Scripts\conda.exe。
CONDA_PREFIX:E:\CondaEnvs\envs\py60。
CONDA_PROMPT_MODIFIER:(py60) 。
CONDA_PYTHON_EXE:E:\Software\MiniConda\python.exe。
CONDA_ROOT:E:\Software\MiniConda。
CONDA_SHLVL:1。
DATAGRIP_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\datagrip.vmoptions。
DATASPELL_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\dataspell.vmoptions。
DEVECOSTUDIO_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\devecostudio.vmoptions。
DOKANLIBRARY2:C:\Program Files\Dokan\DokanLibrary-2.0.6\。
DRIVERDATA:C:\Windows\System32\Drivers\DriverData。
EFC_14492:1。
ELECTRON_FORCE_IS_PACKAGED:true。
ELECTRON_RUN_AS_NODE:1。
ERLANG_HOME:E:\WEB\Erlang\Erlang OTP。
GATEWAY_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\gateway.vmoptions。
GOLAND_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\goland.vmoptions。
HOMEDRIVE:C:。
HOMEPATH:\Users\acstdm。
ICUBE_APP_VERSION:0.6.1。
ICUBE_BUILD_TIME:2025-06-05T11:40:46.728Z。
ICUBE_BUILD_VERSION:1.0.13859。
ICUBE_CODEMAIN_SESSION:7d7ace67-c926-436d-9a90-e1664cde5880。
ICUBE_ELECTRON_PATH:E:\Software\TraeIDE\Trae CN\Trae CN.exe。
ICUBE_ENABLE_MARSCODE_NLS:1。
ICUBE_IS_ELECTRON:true。
ICUBE_MACHINE_ID:91feaaaee2a586100cfedec42c84016daa524b833f4bb02ef3aa7a49e803337f。
ICUBE_MARSCODE_VERSION:1.0.13859。
ICUBE_PRODUCT_PROVIDER:Yinli。
ICUBE_PROVIDER:Yinli。
ICUBE_PROXY_HOST:127.0.0.1。
ICUBE_PROXY_PORT:51000。
ICUBE_QUALITY:stable。
ICUBE_USE_IPV6:false。
ICUBE_VSCODE_VERSION:1.98.2。
IDEA_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\idea.vmoptions。
JAVA_HOME:E:\Graduate\jdk1.8。
JETBRAINSCLIENT_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\jetbrainsclient.vmoptions。
JETBRAINS_CLIENT_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\jetbrains_client.vmoptions。
JPY_INTERRUPT_EVENT:1692。
LOCALAPPDATA:C:\Users\acstdm\AppData\Local。
LOGONSERVER:\\LAPTOP-62E2IUIP。
MAVEN_HOME:D:\Software\IDEA\Javaee\apache-maven-3.8.7。
MYSQL_HOME:D:\Software\Mysql8\mysql-8.0.32-winx64。
NUMBER_OF_PROCESSORS:20。
NVM_HOME:E:\Graduate\Nvm\nvm。
NVM_SYMLINK:E:\Graduate\Nvm\nvm\nodejs。
OLLAMA_MODELS:E:\deepseek_model。
ONEDRIVE:C:\Users\acstdm\OneDrive。
ORIGINAL_XDG_CURRENT_DESKTOP:undefined。
OS:Windows_NT。
PATH:e:\CondaEnvs\envs\py60;E:\CondaEnvs\envs\py60;E:\CondaEnvs\envs\py60\Library\mingw-w64\bin;E:\CondaEnvs\envs\py60\Library\usr\bin;E:\CondaEnvs\envs\py60\Library\bin;E:\CondaEnvs\envs\py60\Scripts;E:\CondaEnvs\envs\py60\bin;E:\Software\MiniConda\condabin;c:\Users\acstdm\.trae-cn\sdks\workspaces\27f99420\versions\node\current;c:\Users\acstdm\.trae-cn\sdks\versions\node\current;D:\Software\python\Scripts;E:\Graduate\jdk1.8\bin;D:\Software\ADS\ads.1.2\bin;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Windows\System32\OpenSSH;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\dotnet;D:\Software\Pycharm\python;D:\Software\IDEA\Javaee\apache-tomcat-9.0.68\bin;D:\Software\IDEA\Javaee\apache-maven-3.8.7\bin;D:\Software\Mysql8\mysql-8.0.32-winx64;D:\Software\Mysql8\mysql-8.0.32-winx64\bin;"D:\Software\IDEA\Javaee\apache-tomcat-9.0.68lib;D:\Software\IDEA\Javaee\apache-tomcat-9.0.68in";E:\Software\putty;E:\WEB\Redis;E:\WEB\Erlang\Erlang OTP\bin;E:\WEB\node;E:\Graduate\MongoDB\Server\4.2\bin;E:\Software\Git\Git\bin;E:\Software\Git\Git\mingw64\libexec\git-core;E:\Graduate\Nvm\nvm;E:\Graduate\Nvm\nvm\nodejs;C:\Program Files\nodejs;E:\WEB\node\node_cache;E:\Graduate\jdk1.8\jre\bin;D:\Software\IDEA\Javaee\apache-maven-3.8.1\bin;D:\Software\ffmpeg-7.1\bin;C:\Program Files\NVIDIA Corporation\NVIDIA app\NvDLISR;E:\Software\MiniConda;E:\Software\MiniConda\Scripts;E:\Software\MiniConda\Library\bin;E:\Software\Microsoft VS Code\bin;e:\Software\TraeIDE\Trae CN\bin;C:\Users\acstdm\AppData\Local\Programs\Python\Python38\Scripts;C:\Users\acstdm\AppData\Local\Programs\Python\Python38;D:\Software\python\Scripts;D:\Software\python;C:\Users\acstdm\AppData\Local\Microsoft\WindowsApps;D:\Software\Pycharm\PyCharm 2023.1\bin;.;E:\Graduate\Nvm\nvm;E:\Graduate\Nvm\nvm\nodejs;E:\Software\WebStrom\WebStorm 2023.3.4\bin;.;C:\Users\acstdm\AppData\Roaming\npm;E:\Software\Ollama;e:\Software\TraeIDE\Trae CN\resources\app\bin\lib。
PATHEXT:.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC。
PHPSTORM_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\phpstorm.vmoptions。
PROCESSOR_ARCHITECTURE:AMD64。
PROCESSOR_IDENTIFIER:Intel64 Family 6 Model 154 Stepping 3, GenuineIntel。
PROCESSOR_LEVEL:6。
PROCESSOR_REVISION:9a03。
PROGRAMDATA:C:\ProgramData。
PROGRAMFILES:C:\Program Files。
PROGRAMFILES(X86):C:\Program Files (x86)。
PROGRAMW6432:C:\Program Files。
PROMPT:(py60) $P$G。
PSMODULEPATH:C:\Program Files\WindowsPowerShell\Modules;C:\Windows\system32\WindowsPowerShell\v1.0\Modules。
PUBLIC:C:\Users\Public。
PYCHARM:D:\Software\Pycharm\PyCharm 2023.1\bin;。
PYCHARM_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\pycharm.vmoptions。
PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING:1。
PYTHONIOENCODING:utf-8。
PYTHONUNBUFFERED:1。
PYTHONUTF8:1。
PYTHON_FROZEN_MODULES:on。
RIDER_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\rider.vmoptions。
RUBYMINE_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\rubymine.vmoptions。
SESSIONNAME:Console。
SSL_CERT_FILE:E:\CondaEnvs\envs\py60\Library\ssl\cacert.pem。
STUDIO_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\studio.vmoptions。
SYSTEMDRIVE:C:。
SYSTEMROOT:C:\Windows。
TEMP:C:\Users\acstdm\AppData\Local\Temp。
TMP:C:\Users\acstdm\AppData\Local\Temp。
USERDOMAIN:LAPTOP-62E2IUIP。
USERDOMAIN_ROAMINGPROFILE:LAPTOP-62E2IUIP。
USERNAME:acstdm。
USERPROFILE:C:\Users\acstdm。
VSCODE_BUILTIN_EXTENSIONS_PATH:e:\Software\TraeIDE\Trae CN\resources\app\extensions。
VSCODE_CODE_CACHE_PATH:C:\Users\acstdm\AppData\Roaming\Trae CN\CachedData\2c8f55ba31b096e35c341364330c33f4047fc6c3。
VSCODE_CRASH_REPORTER_PROCESS_TYPE:extensionHost。
VSCODE_CWD:E:\Software\TraeIDE\Trae CN。
VSCODE_ENV_PREPEND:PATH=c\x3a\Users\acstdm\.trae-cn\sdks\workspaces\27f99420\versions\node\current;c\x3a\Users\acstdm\.trae-cn\sdks\versions\node\current;。
VSCODE_ESM_ENTRYPOINT:vs/workbench/api/node/extensionHostProcess。
VSCODE_EXTENSIONS_PATH:c:\Users\acstdm\.trae-cn\extensions。
VSCODE_HANDLES_UNCAUGHT_ERRORS:true。
VSCODE_IPC_HOOK:\\.\pipe\eae8c8fe-1.98.2-main-sock。
VSCODE_NLS_CONFIG:{"userLocale":"zh-cn","osLocale":"zh-cn","resolvedLanguage":"zh-cn","defaultMessagesFile":"E:\\Software\\TraeIDE\\Trae CN\\resources\\app\\out\\nls.zh-cn.messages.json","locale":"zh-cn","availableLanguages":{}}。
VSCODE_PID:79100。
VSCODE_RUN_IN_ELECTRON:true。
WEBIDE_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\webide.vmoptions。
WEBSTORM:E:\Software\WebStrom\WebStorm 2023.3.4\bin;。
WEBSTORM_VM_OPTIONS:E:\BaiduNetdiskDownload\video\Crack\jetbra\vmoptions\webstorm.vmoptions。
WINDIR:C:\Windows。
XIUMASTER_V1_BUTTON_HOTKEY:16777227。
ZES_ENABLE_SYSMAN:1。
_CONDA_OLD_CHCP:936。
__CONDA_OPENSLL_CERT_FILE_SET:"1"。
PYDEVD_USE_FRAME_EVAL:NO。
TERM:xterm-color。
CLICOLOR:1。
FORCE_COLOR:1。
CLICOLOR_FORCE:1。
PAGER:cat。
GIT_PAGER:cat。
MPLBACKEND:module://matplotlib_inline.backend_inline。
KMP_DUPLICATE_LIB_OK:True。
KMP_INIT_AT_FORK:FALSE。

--- 总共检测到 137 个环境变量 ---

1、目录树

os.walk( ) 是 Python os 模块中一个非常有用的函数,它用于遍历(或称“行走”)一个目录树

核心功能:

os.walk(top, topdown=True, οnerrοr=None, followlinks=False) 会为一个目录树生成文件名。对于树中的每个目录(包括 top 目录本身),它会 yield(产生)一个包含三个元素的元组 (tuple):

(dirpath, dirnames, filenames)

  • dirpath: 一个字符串,表示当前正在访问的目录的路径。
  • dirnames: 一个列表(list),包含了 dirpath 目录下所有子目录的名称(不包括 . 和 ..)。
  • filenames: 一个列表(list),包含了 dirpath 目录下所有非目录文件的名称。

总结:

  os.walk 会首先访问起始目录 (my_project),然后它会选择第一个子目录 (data) 并深入进去,访问 data 目录本身,然后继续深入它的子目录 (processed -> raw)。只有当 data 分支下的所有内容都被访问完毕后,它才会回到 my_project 这一层,去访问下一个子目录 (src),并对 src 分支重复深度优先的探索。

        它不是按层级(先访问所有第一层,再访问所有第二层)进行的,而是按分支深度进行的。这种策略被称之为深度优先

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}")

输出:
 

--- 开始遍历目录:c:\Users\acstdm\Desktop\python60-days-challenge-master\py60-stud ---
当前访问目录(dirpath): c:\Users\acstdm\Desktop\python60-days-challenge-master\py60-stud
子目录列表(dirnames): ['pictures']
文件列表(filenames): ['bike.csv', 'data.csv', 'data.xlsx', 'DAY 1-3.ipynb', 'DAY 10-机器学习建模与评估.ipynb', 'DAY 11-常见调参方式.ipynb', 'DAY 12-启发式算法.ipynb', 'DAY 13-不平衡数据处理.ipynb', 'DAY 14-SHAP图的绘制.ipynb', 'DAY 15-复习日.ipynb', 'DAY 16-数组的常见操作.ipynb', 'DAY 17-常见聚类算法.ipynb', 'DAY 18-推测聚类后簇的含义.ipynb', 'DAY 19-特征筛选算法.ipynb', 'DAY 20-奇异值分解.ipynb', 'DAY 21-常见降维算法.ipynb', 'DAY 22-复习日.ipynb', 'DAY 23-pipeline管道.ipynb', 'DAY 24-元组和OS模块.ipynb', 'DAY 4-缺失值的处理.ipynb', 'DAY 5-独热编码.ipynb', 'DAY 6-描述性统计.ipynb', 'DAY 7 复习日.ipynb', 'DAY 8-标签编码与连续变量处理.ipynb', 'DAY 9-热力图和子图的绘制.ipynb', 'heart.csv', '测试.py']
当前访问目录(dirpath): c:\Users\acstdm\Desktop\python60-days-challenge-master\py60-stud\pictures
子目录列表(dirnames): []
文件列表(filenames): ['归一化.png', '标准化.png']

        介绍这个方法,是因为在你面临云服务器时候,往往只能通过命令行和代码块中函数来查看,无法像电脑一样在界面中查看,所以,这个方法可以让你直接在代码块中查看。

@ 浙大疏锦行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值