一、核心武器库:os与shutil模块
import os, shutil
# 路径操作与元数据
file_path = os.path.abspath("data.txt") # 绝对路径
print(f"大小: {os.path.getsize(file_path)} bytes")
# 高阶文件操作
shutil.copy2("source.log", "backup/") # 保留元数据的复制
shutil.make_archive("data_zip", 'zip', "dataset/") # 目录压缩
二、现代路径管理:pathlib革命
from pathlib import Path
# 面向对象路径操作
config = Path("/etc/app") / "config.yaml" # 路径拼接
if config.exists():
content = config.read_text(encoding='utf-8')
# 模式匹配与递归遍历
py_files = list(Path("src").rglob("*.py")) # 递归搜索
三、关键技巧与避坑指南
- 安全删除目录
shutil.rmtree("temp_data", ignore_errors=True) # 错误静默
- 高效大文件读取
with open("large.log", "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
process(chunk)
- 跨平台路径处理
path = Path("docs") / "release_notes.md"
str_path = path.as_posix() # 转换为POSIX风格
四、高级应用场景
- 内存文件操作
from io import StringIO
mem_file = StringIO()
mem_file.write("Pythonic in-memory data")
- 实时日志监控
with open("service.log", "r") as log:
while True:
line = log.readline()
if line: alert_analysis(line)
五、安全防护要点
|
风险类型 |
防护措施 |
|
路径遍历攻击 |
使用 |
|
竞争条件 |
文件锁( |
|
编码错误 |
明确指定 |
|
误删数据 |
删除前二次确认+备份机制 |
结语
Python的文件系统操控能力远超基础读写。通过os、shutil、pathlib三剑客的组合,配合安全编码实践,开发者可构建健壮的文件处理流程。在云存储时代,这些技能仍是数据处理管道的基石——最新统计显示,87%的ETL工具仍依赖本地文件暂存中间数据。掌握文件操作,即掌控了数据流动的命脉。
扩展思考:如何结合watchdog库实现实时文件监控?异步文件操作有何性能优势?欢迎探讨更多高阶应用!

被折叠的 条评论
为什么被折叠?



