当前位置: 首页 > news >正文

Python 文件存储:pickle 和 json 库的使用

Python 文件存储:pickle 和 json 库的使用

  • 1.使用 pickle 存储 Python 对象
  • 2.使用 json 存储 Python 对象

1.使用 pickle 存储 Python 对象

在 Python 中, 提供的 pickle 模块能够将 Python 对象直接存储到文件中。 在需要使用数据时,直接从文件中读取,并还原为 Python 对象。

注意,pickle 操作的不是文本文件, 而是二进制文件。 因此, 存储的文件如果直接使用文本编辑器,则打开无法查看具体内容。

将 Python 对象存储到 pickle 文件的语法是:

pickle.dump(obj, file)

pickle 文件中将二进制数据读取出来重建为 Python 对象的语法是:

pickle.load(file)

将列表 ls 使用 pickle 模块存储在二进制文件 test.pkl 中,然后再次从文件中读取数据,重建为列表后打印:

import pickle
ls = ['Python', 'Java', 'C', 'Golang', 'C++', 'C#']
file1 = open('test.pkl', 'wb')
pickle.dump(ls, file1)
file1.close()
file2 = open('test.pkl', 'rb')
new_ls = pickle.load(file2)
print(new_ls)

2.使用 json 存储 Python 对象

JSON(javascript object notation)是一种和语言无关的轻量级数据交换格式, 采用文本格式来存储和表示数据。这种格式便于阅读和编写,也易于程序的解析和生成。

JSON 语法规则与 Python 中的字典和列表非常相似:

  1. 利用一对方括号 [] 表示数组;
  2. 利用一对花括号 {} 表示对象;
  3. 利用冒号分割键值对;
  4. 利用逗号分隔数组的元素或对象的键值对。

在 Python 中, 可以通过 json 库方便地实现 JSON 格式字符串与 Python 字典和列表的相互转换。 将 Python 对象转换为 JSON 格式字符串的语法是:

json.dumps(obj, ensure_ascii=True)

将 JSON 格式字符串转换为 Python 对象的语法是:

json.loads(s)

将列表 ls 转换为 JSON 格式字符串的代码如下所示:

import json
ls = ['Python', 'Java', 'C', 'Golang', 'C++', 'C#']
json_str = json.dumps(ls, ensure_ascii=False)
print(type(json_str))
print(json_str)

相反,将上面代码中的 json_str 转换为 Python 列表的代码如下所示:

import json
ls = ['Python', 'Java', 'C', 'Golang', 'C++', 'C#']
json_str = json.dumps(ls, ensure_ascii=False)
new_ls = json.loads(json_str)
print(type(new_ls))
print(new_ls)

相关文章:

  • 【推荐收藏】matplotlib 制作的动态条形图其实很好看
  • 计算机组成原理 ------ 存储系统(1)
  • Open3D (C++) 基于投影点密度的建筑物立面提取
  • SpringCloud Alibaba系列 Nacos(一)
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • JS的精髓,事件详解
  • 高等数学(第七版)同济大学 习题8-6 个人解答
  • 【Linux】进程地址空间
  • 【计算机组成原理】输入/输出系统(四)—— I/O方式
  • 让GPU跑的更快
  • 给课题组师弟师妹们的开荒手册
  • Java操作Excel - Easy Excel
  • 交通状态预测 | Python实现基于LSTM的客流量预测方法
  • 一条sql语句在MySQL的执行流程
  • 当遇到听不了的歌,Python程序员都是这么做的...
  • [译]前端离线指南(上)
  • 2017 前端面试准备 - 收藏集 - 掘金
  • CODING 缺陷管理功能正式开始公测
  • Java,console输出实时的转向GUI textbox
  • MySQL几个简单SQL的优化
  • react-native 安卓真机环境搭建
  • spring + angular 实现导出excel
  • TCP拥塞控制
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 腾讯大梁:DevOps最后一棒,有效构建海量运营的持续反馈能力
  • 转载:[译] 内容加速黑科技趣谈
  • 3月7日云栖精选夜读 | RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势 ...
  • gunicorn工作原理
  • ​批处理文件中的errorlevel用法
  • #etcd#安装时出错
  • #免费 苹果M系芯片Macbook电脑MacOS使用Bash脚本写入(读写)NTFS硬盘教程
  • #图像处理
  • #预处理和函数的对比以及条件编译
  • $$$$GB2312-80区位编码表$$$$
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (27)4.8 习题课
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (day 2)JavaScript学习笔记(基础之变量、常量和注释)
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)spring boot车辆管理系统 毕业设计 031034
  • (规划)24届春招和25届暑假实习路线准备规划
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • *1 计算机基础和操作系统基础及几大协议
  • *2 echo、printf、mkdir命令的应用
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • :如何用SQL脚本保存存储过程返回的结果集
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [20190113]四校联考
  • [202209]mysql8.0 双主集群搭建 亲测可用