Python Day35 学习

发布于:2025-05-30 ⋅ 阅读:(16) ⋅ 点赞:(0)

继续元组和OS模块的学习

1. 可迭代对象

摘自讲义

迭代列表

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


打印结果

迭代列表:
1
2
3
4
5

迭代元组

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

打印结果

迭代元组:
a
b
c

迭代字符串

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

打印结果

迭代字符串:
h
e
l
l
o

迭代范围

# range (范围)
print("迭代 range:")
for number in range(5):  # 生成 0, 1, 2, 3, 4
    print(number)

打印结果

迭代 range:
0
1
2
3
4

迭代集合

print("迭代集合:")
my_set = {3, 1, 4, 1, 5, 9}
for item in my_set:
    print(item)

打印结果
迭代集合:
1
3
4
5
9

注:集合是无序的,所以每次迭代的顺序可能不同

迭代字典

# 字典 (dict) - 默认迭代时返回键 (keys)
print("迭代字典 (默认迭代键):")
my_dict = {'name': 'Alice', 'age': 30, 'city': 'Singapore'}
for key in my_dict:
    print(key)

打印结果
迭代字典 (默认迭代键):
name
age
city

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

打印结果
迭代字典的值:
Alice
30
Singapore
# 迭代字典的键值对 (items)
print("迭代字典的键值对:")
for key, value in my_dict.items(): # items方法很好用
    print(f"Key: {key}, Value: {value}")

打印结果
迭代字典的键值对:
Key: name, Value: Alice
Key: age, Value: 30
Key: city, Value: Singapore

2. OS模块

摘自讲义

代码实现

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

获取当前工作目录

os.getcwd() # get current working directory 获取当前工作目录的绝对路径

打印结果
'c:\\Users\\lenovo\\Desktop\\python60-days-challenge-master'

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

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

打印结果
['data.csv',
 'data.xlsx',
 'day 26 函数专题1.ipynb',
 'day1-3.ipynb',
 'day10.ipynb',
 'day11.ipynb',
 'day12.ipynb',
 'day13.ipynb',
 'day14.ipynb',
 'day16.ipynb',
 'day17.ipynb',
 'day18.ipynb',
 'day19.ipynb',
 'day20 奇异值分解.ipynb',
 'day21 常见的降维算法.ipynb',
 'day23 机器学习流水线.ipynb',
 'day24 元组和OS模块.ipynb',
 'day25 异常处理.ipynb',
 'day27 函数专题2 装饰器.ipynb',
 'day28 类的定义和方法.ipynb',
 'day29 类的装饰器.ipynb',
 'day30 模块和包的导入',
 'day31 文件的拆分和使用',
 'day32 官方文档的阅读.ipynb',
 'day33 简单的神经网络.ipynb',
 'day34 GPU训练和call方法.ipynb',
 'day35 模型可视化与推理.ipynb',
 'day37 早停策略和模型权重的保存.ipynb',
 'day38 Dataset和Dataloader.ipynb',
 'day4.ipynb',
 'day5.ipynb',
 'day6.ipynb',
 'day8 标签编码与连续变量处理.ipynb',
 'day8.ipynb',
 'day9.ipynb',
 'heart.csv',
 'README.md',
 '我的代码.ipynb',
 '我的绘制.ipynb']
#    我们使用 r'' 原始字符串,这样就不需要写双反斜杠 \\,因为\会涉及到转义问题
path_a = r'C:\Users\YourUsername\Documents' # r''这个写法是写给python解释器看,他只会读取引号内的内容,不用在意r的存在会不会影响拼接
path_b = 'MyProjectData'
file = 'results.csv'

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

file_path

打印结果
'C:\\Users\\YourUsername\\Documents\\MyProjectData\\results.csv'

环境变量方法

# 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)} 个环境变量 ---")

打印结果:

ALLUSERSPROFILE=C:\ProgramData
APPDATA=C:\Users\lenovo\AppData\Roaming
CHROME_CRASHPAD_PIPE_NAME=\\.\pipe\crashpad_18924_CNSEXHWRNGNURSIR
COMMONPROGRAMFILES=C:\Program Files\Common Files
COMMONPROGRAMFILES(X86)=C:\Program Files (x86)\Common Files
COMMONPROGRAMW6432=C:\Program Files\Common Files
COMPUTERNAME=LAPTOP-8V66UTMG
COMSPEC=C:\WINDOWS\system32\cmd.exe
CONDA_DEFAULT_ENV=base
CONDA_EXE=E:\Anaconda\Scripts\conda.exe
CONDA_PREFIX=E:\Anaconda
CONDA_PROMPT_MODIFIER=(base) 
CONDA_PYTHON_EXE=E:\Anaconda\python.exe
CONDA_ROOT=E:\Anaconda
CONDA_SHLVL=1
CONFIGSETROOT=C:\WINDOWS\ConfigSetRoot
DRIVERDATA=C:\Windows\System32\Drivers\DriverData
ELECTRON_RUN_AS_NODE=1
FPS_BROWSER_APP_PROFILE_STRING=Internet Explorer
FPS_BROWSER_USER_PROFILE_STRING=Default
HOMEDRIVE=C:
HOMEPATH=\Users\lenovo
JPY_INTERRUPT_EVENT=2264
LOCALAPPDATA=C:\Users\lenovo\AppData\Local
LOGONSERVER=\\LAPTOP-8V66UTMG
NUMBER_OF_PROCESSORS=8
ONEDRIVE=C:\Users\lenovo\OneDrive
ORIGINAL_XDG_CURRENT_DESKTOP=undefined
OS=Windows_NT
PATH=e:\Anaconda;E:\Anaconda;E:\Anaconda\Library\mingw-w64\bin;E:\Anaconda\Library\usr\bin;E:\Anaconda\Library\bin;E:\Anaconda\Scripts;E:\Anaconda\bin;E:\Anaconda\condabin;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\iCLS;C:\Program Files\Intel\Intel(R) Management Engine Components\iCLS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Users\lenovo\AppData\Local\Microsoft\WindowsApps;E:\Anaconda;E:\Anaconda\Scripts;E:\Anaconda\Library\bin;F:\Microsoft VS Code\bin
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
PROCESSOR_ARCHITECTURE=AMD64
PROCESSOR_IDENTIFIER=Intel64 Family 6 Model 142 Stepping 10, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=8e0a
PROGRAMDATA=C:\ProgramData
PROGRAMFILES=C:\Program Files
PROGRAMFILES(X86)=C:\Program Files (x86)
PROGRAMW6432=C:\Program Files
PROMPT=(base) $P$G
PSMODULEPATH=C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules
PUBLIC=C:\Users\Public
PYDEVD_IPYTHON_COMPATIBLE_DEBUGGING=1
PYTHONIOENCODING=utf-8
PYTHONUNBUFFERED=1
PYTHONUTF8=1
PYTHON_FROZEN_MODULES=on
SESSIONNAME=Console
SSL_CERT_FILE=E:\Anaconda\Library\ssl\cacert.pem
SYSTEMDRIVE=C:
SYSTEMROOT=C:\WINDOWS
TEMP=C:\Users\lenovo\AppData\Local\Temp
TMP=C:\Users\lenovo\AppData\Local\Temp
USERDOMAIN=LAPTOP-8V66UTMG
USERDOMAIN_ROAMINGPROFILE=LAPTOP-8V66UTMG
USERNAME=lenovo
USERPROFILE=C:\Users\lenovo
VSCODE_CODE_CACHE_PATH=C:\Users\lenovo\AppData\Roaming\Code\CachedData\848b80aeb52026648a8ff9f7c45a9b0a80641e2e
VSCODE_CRASH_REPORTER_PROCESS_TYPE=extensionHost
VSCODE_CWD=F:\Microsoft VS Code
VSCODE_ESM_ENTRYPOINT=vs/workbench/api/node/extensionHostProcess
VSCODE_HANDLES_UNCAUGHT_ERRORS=true
VSCODE_IPC_HOOK=\\.\pipe\f91f9d04-1.100.2-main-sock
VSCODE_L10N_BUNDLE_LOCATION=file:///c%3A/Users/lenovo/.vscode/extensions/ms-ceintl.vscode-language-pack-zh-hans-1.100.2025051409/translations/extensions/vscode.json-language-features.i18n.json
VSCODE_NLS_CONFIG={"userLocale":"zh-cn","osLocale":"zh-cn","resolvedLanguage":"zh-cn","defaultMessagesFile":"F:\\Microsoft VS Code\\resources\\app\\out\\nls.messages.json","languagePack":{"translationsConfigFile":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\tcf.json","messagesFile":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\848b80aeb52026648a8ff9f7c45a9b0a80641e2e\\nls.messages.json","corruptMarkerFile":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\corrupted.info"},"locale":"zh-cn","availableLanguages":{"*":"zh-cn"},"_languagePackId":"90de127a337928b85e669c0973ef8bae.zh-cn","_languagePackSupport":true,"_translationsConfigFile":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\tcf.json","_cacheRoot":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn","_resolvedLanguagePackCoreLocation":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\848b80aeb52026648a8ff9f7c45a9b0a80641e2e","_corruptedFile":"C:\\Users\\lenovo\\AppData\\Roaming\\Code\\clp\\90de127a337928b85e669c0973ef8bae.zh-cn\\corrupted.info"}
VSCODE_PID=18924
WINDIR=C:\WINDOWS
_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

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

目录树

摘自讲义

基本概念理解

代码实现

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

    # # 你可以在这里对文件进行操作,比如打印完整路径
    # print("    文件完整路径:")
    # for filename in filenames:
    #     full_path = os.path.join(dirpath, filename)
    #     print(f"      - {full_path}")

打印结果

--- 开始遍历目录: c:\Users\PC\Desktop\python训练营 ---
  当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营
  子目录列表 (dirnames): ['演示1']
  文件列表 (filenames): ['day24 元组和OS模块.ipynb']
  当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营\演示1
  子目录列表 (dirnames): ['演示文件夹2']
  文件列表 (filenames): ['day21 常见的降维算法.ipynb', 'day23 机器学习流水线.ipynb']
  当前访问目录 (dirpath): c:\Users\PC\Desktop\python训练营\演示1\演示文件夹2
  子目录列表 (dirnames): []
  文件列表 (filenames): ['main.ipynb']

今天就学习到这里,明日继续,加油!!!@浙大疏锦行