Python本地文件读写与数据持久化实用工具模块

宋时安
宋时安
发布时间:2026-10-12 | 2人浏览过
原创

在数据分析和业务开发场景中,频繁将内存中的临时数据落盘至本地文件是常见需求。本文将一套经过验证的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)
控制台打印的文件写入与读取日志结果
展示文本覆写、追加及对象反序列化的终端输出状态
JSON数据序列化保存后的终端输出对比
确认 JSON 字典结构成功落盘并完整还原

关键细节说明

在实际业务链路中接入该模块时,需注意以下边界情况:
① WriteInfo 会清空目标文件原内容,若需增量记录请优先使用 AppedInfo。
② 序列化非基本类型对象(如自定义类实例)时,建议提前在类定义中补充 __getstate__ 方法,避免属性丢失。
③ JSON 读写默认关闭了中文转义(ensure_ascii=False),若对接第三方旧接口可能需临时切换为默认配置。

简要总结

通过集中管理文件IO逻辑,开发人员可避免在多处散落冗余的路径判断与编码声明。上述封装覆盖了文本流、字节流、字典列表等主流格式的存取需求,配合完善的异常拦截能够显著提升脚本的容错率。以上就是Python本地文件读写与数据持久化实用工具模块的详细内容,更多关于Python文件操作与脚本封装的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表