Python本地文件读写与数据持久化实用工具模块
在数据分析和业务开发场景中,频繁将内存中的临时数据落盘至本地文件是常见需求。本文将一套经过验证的Python文件操作函数进行集中封装,涵盖字符串读写、内容追加、序列化对象存取以及JSON结构化数据持久化,提供可直接导入调用的脚本模板与执行对照,降低重复造轮子的成本。
封装目标与基础准备
文件操作属于底层高频动作,逐行重复编写容易引发编码不一致或异常拦截遗漏的问题。通过建立统一的辅助脚本(如FileOPC.py),可将底层open模式、字符集声明、异常捕获逻辑统一收敛。后续项目只需import引入即可按需调用,确保数据落盘的稳定性与可读性。
核心功能代码实现
以下为完整的函数定义集合。为保证跨平台兼容性与现代Python规范,底层文件打开方式已统一补充encoding='utf-8'参数,并完善异常分支返回机制:
# 文件操作辅助模块
import pickle
import json
# 读取文件的所有内容(返回字符串)
def ReadFileAllInfoAsStr(file_path_and_name):
try:
with open(file_path_and_name, 'r', encoding='utf-8') as f_obj:
return f_obj.read()
except FileNotFoundError:
msg = f"很抱歉,文件【{file_path_and_name}】不存在"
print(msg)
return None
# 读取文件的所有内容(返回列表,按行分割)
def ReadFileAllInfoAsList(file_path_and_name):
try:
with open(file_path_and_name, 'r', encoding='utf-8') as f_obj:
return f_obj.readlines()
except FileNotFoundError:
msg = f"很抱歉,文件【{file_path_and_name}】不存在"
print(msg)
return None
# 写入信息到文件(覆盖原有内容)
def WriteInfo(need_write_info, file_path_and_name):
try:
with open(file_path_and_name, 'w', encoding='utf-8') as f_obj:
f_obj.write(need_write_info)
except Exception as e:
print(e)
# 追加信息到文件中(自动换行)
def AppedInfo(need_write_info, file_path_and_name):
try:
with open(file_path_and_name, 'a', encoding='utf-8') as f_obj:
f_obj.write(f'\n{need_write_info}')
except Exception as e:
print(e)
# 写入对象到文件(基于 pickle 序列化)
def WriteObj(need_write_info, file_path_and_name):
try:
with open(file_path_and_name, 'wb') as f_obj:
pickle.dump(need_write_info, f_obj)
except Exception as e:
print(e)
# 读取序列化对象文件
def ReadObj(file_path_and_name):
try:
with open(file_path_and_name, 'rb') as f_obj:
return pickle.load(f_obj)
except Exception as e:
print(e)
# 写入信息为 json 文件
def WritInfoAsJson(need_write_info, file_path_and_name):
try:
with open(file_path_and_name, 'w', encoding='utf-8') as f_obj:
json.dump(need_write_info, f_obj, ensure_ascii=False)
except Exception as e:
print(e)
# 读取 json 文件信息
def ReadInfoToJson(file_path_and_name):
try:
with open(file_path_and_name, 'r', encoding='utf-8') as f_obj:
return json.load(f_obj)
except Exception as e:
print(e)
模块调用与结果验证
完成封装后,可通过外部脚本进行测试验证。主要流程包含文本覆写与追加、对象序列化和JSON持久化三大场景:
# 引入封装好的工具模块
import FileOPC
print('\n--- 基础文本操作 ---')
txt_path = 'file/test.txt'
test_str = "测试写入内容abcdefg"
FileOPC.WriteInfo(test_str, txt_path)
# 演示字节转换差异(仅用于调试参考)
print('字符串转 bytes 对象:', b'测试写入内容')
FileOPC.AppedInfo('追加信息123', txt_path)
FileOPC.AppedInfo('测试追加信息456', txt_path)
# 演示字符串切分
cut_str = "Alice in wonderlan 切割字符串,1,2,3,45,6"
print('切分结果:', cut_str.split(','))
print('\n--- 对象与 JSON 持久化 ---')
pkl_path = 'file/test2.pkl'
FileOPC.WriteObj('测试写入对象信息112254799abcadshofdsaujfoduasfoj', pkl_path)
pkl_data = FileOPC.ReadObj(pkl_path)
print('读取 pickle 对象:', pkl_data)
json_path = 'file/testJson.json'
json_datas = {
"101001": [1, 3, 5, 7, 9],
"101009": ["张三", "李四", '王五']
}
FileOPC.WritInfoAsJson(json_datas, json_path)
json_res = FileOPC.ReadInfoToJson(json_path)
print('读取 JSON 数据:', json_res)
关键细节说明
在实际业务链路中接入该模块时,需注意以下边界情况:
① WriteInfo 会清空目标文件原内容,若需增量记录请优先使用 AppedInfo。
② 序列化非基本类型对象(如自定义类实例)时,建议提前在类定义中补充 __getstate__ 方法,避免属性丢失。
③ JSON 读写默认关闭了中文转义(ensure_ascii=False),若对接第三方旧接口可能需临时切换为默认配置。
简要总结
通过集中管理文件IO逻辑,开发人员可避免在多处散落冗余的路径判断与编码声明。上述封装覆盖了文本流、字节流、字典列表等主流格式的存取需求,配合完善的异常拦截能够显著提升脚本的容错率。以上就是Python本地文件读写与数据持久化实用工具模块的详细内容,更多关于Python文件操作与脚本封装的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









