Python文件、异常与模块全解析
definitsuper().init(message)文件操作铁律始终使用with语句,指定明确编码,处理路径兼容性异常处理原则精确捕获特定异常保留原始异常信息避免裸露的except:模块设计规范遵循单一职责原则使用__all__控制导出合理组织包结构错误日志策略记录完整上下文区分错误级别保护敏感信息资源管理技巧使用contextlib简化上下文创建大文件使用流式处理及时释放非托管资源。
Python文件、异常与模块全解析
一、文件操作深度指南
1. 文件操作基础
-
打开与关闭
安全操作范式:
with open(‘data.txt’, ‘r’, encoding=‘utf-8’) as file: 文件操作代码
自动处理文件关闭,避免资源泄漏 -
核心模式解析
模式 描述 文件存在 文件不存在 r 读取 打开 报错 r+ 读写 打开 报错 w 写入 清空创建 新建 a 追加 尾部追加 新建 x 排他 报错 新建 -
二进制模式扩展
处理非文本文件:'rb’读取二进制,'wb’写入二进制
2. 文件操作方法
-
内容读取
file.read(size) 读取指定字节
file.readline() 逐行读取
file.readlines() 返回行列表 -
写入操作
file.write(str) 写入字符串
file.writelines(list) 写入多行 -
指针控制
file.tell() 获取当前位置
file.seek(offset, whence) 移动指针
(whence: 0-开头,1-当前,2-结尾)
二、异常处理进阶
1. 异常体系结构
- 异常继承树
BaseException
├── KeyboardInterrupt
├── SystemExit
└── Exception
├── ValueError
├── FileNotFoundError
├── TypeError
└── …
2. 自定义异常
class MyError(Exception):
def init(self, message):
super().init(message)
self.code = 500
触发示例
raise MyError(“自定义异常说明”)
3. 上下文管理进阶
class FileManager:
def init(self, filename, mode):
self.filename = filename
self.mode = mode
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, traceback):
self.file.close()
if exc_type: # 处理异常
print(f"操作异常: {exc_val}")
return True # 抑制异常传播
使用示例
with FileManager(‘log.txt’, ‘w’) as f:
f.write(‘操作记录’)
三、模块系统深度解析
1. 模块加载机制
-
搜索路径优先级
- 当前目录
- PYTHONPATH环境变量目录
- 标准库目录
- .pth文件指定目录
-
导入过程解析
import module # 完整导入
from package import module # 包内导入
import module as alias # 别名导入
from module import object # 精准导入
2. 包开发规范
-
标准包结构
mypackage/
├── init.py # 包标识
├── core.py # 核心模块
├── utils/ # 子包
│ ├── init.py
│ └── helpers.py
└── setup.py # 打包配置 -
init.py魔法方法
all = [‘func1’, ‘ClassA’] # 控制*导入的内容
version = ‘1.0.0’ # 定义包版本
3. 动态导入技术
import importlib
按需加载模块
module = importlib.import_module(‘json’)
重载已导入模块
importlib.reload(existing_module)
检查模块存在
import importlib.util
spec = importlib.util.find_spec(‘requests’)
exists = spec is not None
四、高级异常处理模式
1. 异常链与上下文
try:
risky_operation()
except DatabaseError as e:
raise ServiceError(“业务处理失败”) from e # 保留原始异常链
2. 异常日志集成
import logging
logger = logging.getLogger(name)
try:
process_data()
except Exception as e:
logger.exception(“数据处理异常”) # 自动记录完整堆栈
raise # 可选重新抛出
五、文件系统高级操作
1. 路径管理
from pathlib import Path
p = Path(‘data/2023’) / ‘report.pdf’ # 路径拼接
if not p.parent.exists():
p.parent.mkdir(parents=True) # 递归创建目录
2. 高效文件处理
-
内存映射文件
with open(‘bigfile.bin’, ‘rb’) as f:
mm = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ)
print(mm[:100]) # 直接访问内存 -
CSV高级处理
import csv
with open(‘data.csv’, encoding=‘utf-8-sig’) as f:
reader = csv.DictReader(f)
for row in reader:
process(row[‘name’])
六、模块分发与打包
1. setup.py配置
from setuptools import setup, find_packages
setup(
name=‘mypackage’,
version=‘0.1’,
packages=find_packages(),
install_requires=[
‘requests>=2.25’,
‘numpy’
],
entry_points={
‘console_scripts’: [
‘mycli=mypackage.cli:main’
]
}
)
2. 打包发布流程
构建包
python setup.py sdist bdist_wheel
检查包
twine check dist/*
上传到PyPI
twine upload dist/*
七、最佳实践总结
-
文件操作铁律
始终使用with语句,指定明确编码,处理路径兼容性 -
异常处理原则
- 精确捕获特定异常
- 保留原始异常信息
- 避免裸露的except:
-
模块设计规范
- 遵循单一职责原则
- 使用__all__控制导出
- 合理组织包结构
-
错误日志策略
- 记录完整上下文
- 区分错误级别
- 保护敏感信息
-
资源管理技巧
- 使用contextlib简化上下文创建
- 大文件使用流式处理
- 及时释放非托管资源

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)