python文件IO之pickle 模块读写对象数据

可以向一个文件中写入字符串,读取后也是读取字符串形式,但是不能直接向文件中写入像列表这样的对象,需要 pickle 等模块才行。

pickle 模块介绍

  • pickle 模块使用强大且有效的算法来进行序列化和反序列化。
  • 序列化是指将一个对象转换为能够存储在一个文件中或者在网络上进行传输的字节流的过程(序列化 = 卸载对象)

  • 反序列化指的是相反的过程,它是从字节流中提取出对象的过程(反序列化 = 加载对象)

注意

  • 通常以 dat或者bin为文件后缀名来保存二进制数据等,不过用其它的后缀名也可,毕竟后缀名只单单是一个后缀名。
  • 调用 pickle 模块中的 load 和 dump 函数来读写数据。
  • 调用一次dump就是写入一个数据,调用一次load就是读取一个数据。
  • 可以使用 load 函数重复读取直到函数抛出一个 EOFError 异常(文件末尾异常)。当抛出这个异常时,捕获并处理它以结束文件读取过程。

示例代码

import pickledef main():outfile = open("data2.txt", "wb")pickle.dump(45, outfile)   # 写入一个对象pickle.dump(56.6, outfile)   # 写入一个对象pickle.dump("编程很有趣", outfile)   # 写入一个对象pickle.dump([1, 2, 3, 4], outfile)   # 写入一个对象outfile.close()infile = open("data2.txt", "rb")while True:try:data = pickle.load(infile)print(type(data), ": ", data)except EOFError:print("已经读取完毕")breakinfile.close()main()

运行结果

<class 'int'> :  45
<class 'float'> :  56.6
<class 'str'> :  编程很有趣
<class 'list'> :  [1, 2, 3, 4]
已经读取完毕

end

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/16197.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端面试手册

前端面试手册 岗位职责&#xff1a; 1&#xff0e;熟悉公司业务&#xff0c;能独立高效高质地完成任务&#xff0c;负责功能的开发、测试、上线、维护&#xff1b; 2&#xff0e;负责推动、优化前端基础架构、组件抽象&#xff0c;提升开发效率&#xff1b; 3&#xff0e;关…

四. TensorRT模型部署优化-模型部署的基础知识

目录 前言0. 简介1. FLOPS2. TOPS3. HPC的排行&#xff0c;CPU/GPU比较4. FLOPs5. FLOPS是如何计算的6. CUDA Core vs Tensor Core总结参考 前言 自动驾驶之心推出的 《CUDA与TensorRT部署实战课程》&#xff0c;链接。记录下个人学习笔记&#xff0c;仅供自己参考 本次课程我们…

记一次Spark cache table导致的数据问题以及思考

目前在做 Spark 升级(3.1.1升级到3.5.0)的时候&#xff0c;遇到了cache table导致的数据重复问题&#xff0c;这种情况一般来说是很少见的&#xff0c;因为一般很少用cache table语句。 当然该问题已经在Spark3.5.1已经解决了,可以查看对应的 SPARK-46995和SPARK-45592 从以上的…

最小二乘法-超详细推导(转换为矩阵乘法推导,矩阵求导推导)

最小二乘法就是让均方误差最小。 下面是损失函数转换为矩阵方式的详解 如何让其最小&#xff0c;在导数为0的地方取极小值。 问&#xff1a;导数为0的地方可能去极大值&#xff0c;也可能是极小值&#xff0c;凭什么说导数为0就是极小值&#xff1f; 答&#xff1a;因为使用…

android ndc firewall 命令type 黑名单 白名单差异

可以看到以白名单方式使能防火墙&#xff0c;fw_FORWARD fw_INPUT fw_OUTPUT 的操作是DROP或REJEDCT。即默认所有应用不允许上网&#xff0c;需要 XXX:/ # ndc firewall enable whitelist 200 0 Firewall command succeeded XXX:/ # iptables -t filter -L Chain INPUT (polic…

酷黑简洁大气体育直播自适应模板赛事直播门户网站源码

源码名称&#xff1a;酷黑简洁大气体育直播自适应模板赛事直播门户网站源码 开发环境&#xff1a;帝国cms 7.5 安装环境&#xff1a;phpmysql 支持PC与手机端同步生成html&#xff08;多端同步生成插件&#xff09; 带软件采集&#xff0c;可以挂着自动采集发布&#xff0c;无…

【HSQL001】HiveSQL内置函数手册总结(更新中)

1.熟悉、梳理、总结下Hive SQL相关知识体系。 2.日常研发过程中使用较少&#xff0c;随着时间的推移&#xff0c;很快就忘得一干二净&#xff0c;所以梳理总结下&#xff0c;以备日常使用参考 3.欢迎批评指正&#xff0c;跪谢一键三连&#xff01; 文章目录 1.函数清单 1.函数清…

某某某加固系统分析

某某某加固系统内核so dump和修复&#xff1a; 某某某加固系统采取了内外两层native代码模式&#xff0c;外层主要为了保护内层核心代码&#xff0c;从分析来看外层模块主要用来反调试&#xff0c;释放内层模块&#xff0c;维护内存模块的某些运行环境达到防止分离内外模块&am…

网上比较受认可的赚钱软件有哪些?众多兼职选择中总有一个适合你

在这个互联网高速发展的时代&#xff0c;网上赚钱似乎成了一种潮流。但是&#xff0c;你是否还在靠运气寻找赚钱的机会&#xff1f;是否还在为找不到靠谱的兼职平台而苦恼&#xff1f; 今天&#xff0c;就为你揭秘那些真正靠谱的网上赚钱平台&#xff0c;让你的赚钱之路不再迷…

等保测评的流程是怎样的

等保测评概述 等保测评&#xff0c;即信息安全等级保护测评&#xff0c;是指对信息系统安全性能进行等级评估的过程。其目的是通过评估系统的安全性能&#xff0c;为系统提供一个安全等级&#xff0c;并规定相应的保护措施。等保测评的流程通常包括定级、备案、安全建设、等级测…

Python--List列表

list列表⭐⭐ 1高级数据类型 Python中的数据类型可以分为&#xff1a;数字型&#xff08;基本数据类型&#xff09;和非数字型&#xff08;高级数据类型&#xff09; ●数字型包含&#xff1a;整型int、浮点型float、布尔型bool、复数型complex ●非数字型包含&#xff1a;字符…

TypeScript-type注解对象类型

type注解对象类型 在TS中对于对象数据的类型注解&#xff0c;除了使用interface之外还可以使用类型别名来进行注解&#xff0c;作用类似 type Person {name: stringage: number }const p:Person {name: lily,age: 16 } type 交叉类型&模拟继承 类型别名配合交叉类型…

docker创建的rabbitmq,启动容器时报:Failed to create thread: Operation not permitted (1)

原因&#xff1a;docker内的用户权限受限 启动docker时加上参数 --privilegedtrue docker run --privilegedtrue -d --name rabbitmq --restartalways -p 5671:5671 -p 5672:5672 -p 15672:15672 -p 15671:15671 -p 25672:25672 -v /home/rabbitmq/data/:/var/rabbitm…

整合SSM框架笔记

整合SSM框架笔记 Spring5 Spring MVC MyBatis Druid MySQL Thymeleaf 感谢尚硅谷课程&#xff1a;B站课程 前言 单Spring框架时&#xff0c;是Java工程。 Spring与Spring MVC可以共用一个配置文件&#xff0c;也可以不共用一个&#xff0c;推荐不共用一个。 Spring与Sp…

Quartus 联合 ModelSim 仿真 IP 核(RAM)

文章目录 ModelSim 路径设置创建 RAM进行仿真 本文主要介绍如何在包含 IP 核的 Quartus 项目中使用 Modelsim 进行仿真&#xff0c;本文基于 IP 核 RAM: 2-PORT&#xff0c;其他 IP 核类似。 ModelSim 路径设置 点击 Tools->Options 点击 EDA Tool Options&#xff0c;设置…

BeanFactory、FactroyBean、ApplicationContext

BeanFactory Ioc容器、定义接口规范来管理spring bean的生命周期、依赖、注入&#xff0c;spring中有各种Ioc容器 FactroyBean 定制的工厂Bean&#xff0c;可以通过抽象工厂方式创建的bean&#xff0c;不纳入spring的生命周期、依赖、注入特性&#xff0c;相当于spring给第三…

string OJ题

下面分享一下string做题心得 1. 明白字符串中存储的数字为0 8 9与0 8 9 完全不同&#xff0c;字符0其实在串中存储的是48&#xff0c;要有意识的转化。字符串中如果存数字8&#xff0c;意味着存了BS&#xff08;退格&#xff09; 例如1&#xff1a; 算出结果为5&#xff0c;存…

MySQL 用户变量赋值、查询赋值、滚动赋值

在MySQL中&#xff0c;用户变量是一种在会话级别存储和重用值的方式&#xff0c;它们以符号开头。用户变量可以在查询中用来存储和传递数据&#xff0c;增强SQL脚本的功能性。 定义和赋值用户变量用户变量可以直接在查询中定义并赋值&#xff0c;不需要预先声明。赋值可以使用S…

springboot+mybatis+druid 配置单实例多数据源

第一步&#xff1a;pom中添加依赖 <!--mybatis多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId><version>2.5.6</version></dependency> 第…

Selenium 自动化测试工具<2>(Selenium 常用API的使用方法)

文章目录 浏览器操作浏览器最大化设置浏览器的大小浏览器的前进和后退操作浏览器滚动条 键盘事件单个按键用法键盘组合键用法 鼠标事件不同窗口搜索定位一组元素定位多层框架下拉框定位alert、confirm、prompt 的处理上传文件操作自动截屏 继上一篇文章对 Selenium API 的使用&…