当前位置: 首页 > 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.dtcms.com/a/323088.html

相关文章:

  • 【Mac】MLX:Lora微调工作流
  • 【排序算法】①直接插入排序
  • QT第二讲-信号和槽
  • uniapp实现的圆形滚盘组件模板
  • ThingsBoard配置邮件发送保姆级教程(新版qq邮箱)
  • SkyWalking-2--Java Agent是什么?
  • Qt与嵌入式设备中的字节序问题
  • 客服Agent革命:智能客服系统的技术实现与效果评估
  • 八、《DaaS(设备即服务):企业轻资产化新路径》--从97.4%首期投入削减到AI算力高效迭代的范式革命
  • ​​​​​​​【Datawhale AI夏令营】多模态RAG财报问答挑战赛:学习笔记与上分思考
  • “黑影御剑飞行”视频引发的思考
  • 差分放大电路的四种接法
  • react-window
  • 组合期权:垂直价差
  • Playwright C# 自动登录并上传 Excel 文件 的可运行示例
  • Java 数据类型与内存模型:从字节到引用的底层逻辑
  • 数字图像处理基础——opencv库(Python)
  • C语言库中的字符函数
  • 基于 RAUC 的 Jetson OTA 升级全攻略
  • Vue和Springboot初步前后端分离建立项目连接(解决前后端跨域问题)
  • linux安装php
  • 机器学习 K-Means聚类 无监督学习
  • AI 算法优化实战指南:从理论到部署的全流程优化策略
  • VSCode添加Python、Java注释技巧、模板
  • 企业级web应用服务器TOMCAT入门详解
  • 2G内存的服务器用宝塔安装php的fileinfo拓展时总是卡死无法安装成功的解决办法
  • Atto Round 1 (Codeforces Round 1041, Div. 1 + Div. 2) C、D、E
  • 数码管的使用(STC8)
  • 美股高频分时Tick数据分钟级解析
  • Leetcode-19. 删除链表的倒数第 N 个结点