当前位置: 首页 > news >正文

【Python 高频 API 速学 ⑥】

一、为什么叫「2 保险」?

• 第一重:with open → 自动关门,永不漏文件句柄。
• 第二重:pathlib → Windows、macOS、Linux 路径写法统一,API 面向对象。
两者加起来,90 % 的文件操作不用再写 try-finally 或手动拼斜杠。


二、两保险一览

保险核心语法默认模式额外杀器
with open()上下文管理器‘r’ 文本读encoding, newline, buffering
pathlib.Path面向对象路径/ 运算符拼路径,glob, read_text, write_text

三、一行代码场景秀

  1. 一次性读整个文件(小文件)
from pathlib import Path
content = Path('poem.txt').read_text(encoding='utf-8')
  1. 一次性写文件并自动创建目录
out = Path('output/report.csv')
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text('name,score\n')
  1. 大文件流式处理
from pathlib import Path
with Path('big.log').open() as f:for line in f:if 'ERROR' in line:print(line.rstrip())
  1. 批量改后缀
for p in Path('photos').glob('*.jpeg'):p.rename(p.with_suffix('.jpg'))
  1. 拼接跨平台路径
root = Path.home() / 'Documents' / 'project'
config = root / 'config.yaml'
  1. 统计代码行数(含子目录)
print(sum(1for p in Path('src').rglob('*.py')for _ in p.open(encoding='utf-8')))

四、mini 实战:5 行生成「当日备份」脚本

需求:把 ./data 文件夹打包成 zip,文件名带时间戳。

from pathlib import Path
from datetime import datetime
import zipfiletoday = datetime.now().strftime('%Y%m%d')
backup = Path(f'backup_{today}.zip')
with zipfile.ZipFile(backup, 'w') as zf:for file in Path('data').rglob('*'):zf.write(file, arcname=file.relative_to('data'))
print('Backup →', backup.resolve())

核心动作:
Path.rglob('*') 递归遍历
with zipfile... 自动关闭文件句柄
resolve() 给出绝对路径,方便日志记录


五、记忆口令

“open 配 with,文件永不漏; 斜杠用 /,Path 跨平台。”

http://www.lryc.cn/news/615626.html

相关文章:

  • 09 【C++ 初阶】C/C++内存管理
  • [激光原理与应用-207]:光学器件 - 光纤种子源激光器常用元器件
  • Linux文件系统基石:透彻理解inode及其核心作用
  • 【高等数学】第八章 向量代数与空间解析几何——第四节 空间直线及其方程
  • 分析报告:基于字节连续匹配技术的KV缓存共享实施可能性及其扩展
  • 【机器学习深度学习】模型选型:如何根据模型的参数算出合适的设备匹配?
  • 202506 电子学会青少年等级考试机器人二级理论综合真题
  • 202506 电子学会青少年等级考试机器人三级器人理论真题
  • openvela之STM32开发板部署
  • LLM表征的提取方式
  • EP06:【DL 第二弹】动态计算图与梯度下降入门
  • UCMT部分复现
  • Chaos Monkey 故障注入工具使用介绍
  • Spring Boot Starter 自动化配置原理深度剖析
  • CentOS7编译安装GCC
  • C++高频知识点(十七)
  • C++ 虚函数、多重继承、虚基类与RTTI的实现成本剖析
  • AI大模型模态特征详解
  • 鸿蒙分布式任务调度深度剖析:跨设备并行计算的最佳实践
  • <PLC><汇川><字符转换>在汇川PLC中,如何进行字符串的转换与比较?
  • 从零开始理解编译原理:设计一个简单的编程语言
  • 二十、MySQL-DQL-条件查询
  • Kotlin初体验
  • DeepSeek智能考试系统智能体
  • 在 VS Code 或 Visual Studio 2022 上搭建 ESP32-CAM 开发环境
  • Vulnhub----Beelzebub靶场
  • Day 20 奇异值SVD分解
  • 前端懒加载技术全面解析
  • 衰减器的计算
  • 【文献阅读】我国生态问题鉴定与国土空间生态保护修复方向