python将数据保存到文件的多种实现方式

  • 🌈所属专栏:【python】
  • 作者主页:  Mr.Zwq
  • ✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询!

您的点赞、关注、收藏、评论,是对我最大的激励和支持!!!🤩🥰😍

目录

一、原始方式

二、使用自带模块

1.json

保存

读取

2.pickle

保存

读取

3.csv

保存

读取

总结


一、原始方式

# 这里假设数据集是一个用户字典列表
users_list=[
    {'id':1,'name':'小明','age':14,'sex':'男'},
    {'id':2,'name':'张三','age':16,'sex':'女'},
    {'id':3,'name':'李四','age':17,'sex':'男'},
    {'id':4,'name':'王五','age':12,'sex':'女'},
]

# 将数据写入文件并保存
with open('users_list.txt','w') as f:
    f.write(str(users_list))    # 注意使用str函数将列表转换成字符串类型

# 从文件读取数据
with open('users_list.txt','r') as f:
    users_list=eval(f.read())   # 使用eval函数将字符串类型数据转换成列表
    print(users_list)
    print(type(users_list))

打开该文件查看:

查看输出:


 

二、使用自带模块

1.json

保存

import json

# 这里假设数据集是一个用户字典列表
users_list=[
    {'id':1,'name':'小明','age':14,'sex':'男'},
    {'id':2,'name':'张三','age':16,'sex':'女'},
    {'id':3,'name':'李四','age':17,'sex':'男'},
    {'id':4,'name':'王五','age':12,'sex':'女'},
]

# 将数据写入文件并保存
with open('users.json','w') as f:
    json.dump(users_list,f)

打开该文件查看:

可以发现中文被进行了默认的自动编码,如若不想进行编码转换,可设置  ensure_ascii=False,即修改为:

# 将数据写入文件并保存
with open('users.json','w') as f:
    json.dump(users_list,f,ensure_ascii=False)

再次打开该文件查看 :


读取

# 从文件读取数据
with open('users.json','r') as f:
    users=json.load(f)
print(users)
print(type(users))

查看输出

读取出来数据已经是列表类型了,可直接进行操作。

2.pickle

保存

import pickle

# 这里假设数据集是一个用户字典列表
users_list=[
    {'id':1,'name':'小明','age':14,'sex':'男'},
    {'id':2,'name':'张三','age':16,'sex':'女'},
    {'id':3,'name':'李四','age':17,'sex':'男'},
    {'id':4,'name':'王五','age':12,'sex':'女'},
]

# 将数据写入文件并保存
with open('users_list.pkl', 'wb') as f:
    pickle.dump(users_list, f)

注意:这里保存的模式是wb,即二进制方式写入,因为pickle是按照二进制的方式进行保存、读取数据的。

打开该文件查看:


读取

# 从文件读取数据
with open('users_list.pkl', 'rb') as f:
    users_list = pickle.load(f)
print(users_list)
print(type(users_list))

注意这里使用 rb模式,即二进制方式读取 。

查看输出:

 读取出来数据已经是列表类型了,可直接进行操作。 

3.csv

保存

import csv

# 这里假设数据集是一个用户字典列表
users_list=[
    {'id':1,'name':'小明','age':14,'sex':'男'},
    {'id':2,'name':'张三','age':16,'sex':'女'},
    {'id':3,'name':'李四','age':17,'sex':'男'},
    {'id':4,'name':'王五','age':12,'sex':'女'},
]

# 将数据写入文件并保存
# 需指定 newline='' ,不然保存时默认会间隔空行,可自行去除后查看对比
with open('users.csv','w',newline='') as f:     
    csv_writer=csv.DictWriter(f,fieldnames=users_list[0].keys())    # 创建一个csv写入对象,表头为用户字典的键
    csv_writer.writeheader()    # 写入表头
    csv_writer.writerows(users_list)    # 写入数据

打开文件查看(csv格式文件可以用excel打开并进行编辑):

 


读取

# 从文件读取数据
with open('users.csv','r') as f:
    users_list = csv.DictReader(f)
    users_list=[i for i in users_list]
    print(users_list)

 查看输出

读取出来数据是一个 csv.DictReader 对象,遍历转化为列表后进行操作。

总结

感谢观看,原创不易,如果觉得有帮助,请给文章点个赞吧,让更多的人看到。🌹🌹🌹

👍🏻也欢迎你,关注我。👍🏻

如有疑问,可在评论区留言哦~

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EasyRecovery2024数据恢复神器#电脑必备良品

EasyRecovery数据恢复软件,让你的数据重见天日! 大家好!今天我要给大家种草一个非常实用的软件——EasyRecovery数据恢复软件!你是不是也曾经遇到过不小心删除了重要的文件,或者电脑突然崩溃导致数据丢失的尴尬情况呢&…

手机照片免费数据恢复软件EasyRecovery2024免费版下载

大家好!今天我要给大家推荐一款非常棒的软件——EasyRecovery。相信大家都知道,电脑中的重要文件一旦丢失,对我们的工作和学习都会产生很大的影响。 而EasyRecovery软件就是专门解决这个问题的利器!它能够帮助我们快速、有效地恢…

第三篇—基于黑白样本的webshell检测

本篇为webshell检测的第三篇,主要讲的是基于黑白样本的webshell预测,从样本收集、特征提取、模型训练,最后模型评估这四步,实现一个简单的黑白样本预测模型。   若有误之处,望大佬们指出 Ⅰ 基本实现步骤 样本收集&…

Unity中的伽马(Gamma)空间和线性(Linear)空间

伽马空间定义:通常用于描述图像在存储和显示时的颜色空间。在伽马空间中,图像的保存通常经过伽马转换,使图片看起来更亮。 gamma并不是色彩空间,它其实只是如何对色彩进行采样的一种方式 为什么需要Gamma: 在游戏业…

53. QT插件开发--插件(动态库so)的调用与加载

1. 说明 在使用QT进行插件库的开发之后,还需要将这个插件库程序生成的so动态链接库加载到主程序框架中进行使用,才能达到主程序的模块化开发的效果。在前一篇文章插件创建中介绍了如何在QT中开发插件库,并提供外部接口调用。本篇博客的主要作用是模拟在主程序框架中加载动态…

诊断丢帧:发送端连续帧发送过快,导致接收端丢帧

项目场景: 在项目开发过程中,对于报文的接收/发送,一般来说,通信量大,选择Polling(轮询)处理模式;通信量小,选择Interrupt(中断)处理模式。具体选择没有优劣之分。结合项目的实际情况,选择适合项目的方式就好。小编将分享一个Polling模式下出现的丢帧现象。 1576…

Docker镜像技术剖析

目录 1、概述1.1 什么是镜像?1.2 联合文件系统UnionFS1.3 bootfs和rootfs1.4 镜像结构1.5 镜像的主要技术特点1.5.1 镜像分层技术1.5.2 写时复制(copy-on-write)策略1.5.3 内容寻址存储(content-addressable storage)机制1.5.4 联合挂载(union mount)技术 2.机制原理…

C# WPF入门学习主线篇(十五)—— DockPanel布局容器

C# WPF入门学习主线篇(十五)—— DockPanel布局容器 欢迎来到C# WPF入门学习系列的第十五篇。在前几篇文章中,我们探讨了 Canvas、StackPanel 和 WrapPanel 布局容器及其使用方法。本篇博客将介绍另一种强大且常用的布局容器——DockPanel。…

打造成功的人力RPO项目:赢得市场赚取利润

人力资源外包(RPO)项目是当今企业在招聘和人才管理方面越来越倾向的选择。想要通过人力RPO项目赚钱,以下是一些关键的策略和步骤,帮助您进入这个市场并取得成功。 1. 建立专业的人力RPO服务 首先,要想在人力RPO项目中赚钱,必须建立…

HCIA11 网络安全之本地 AAA 配置实验

AAA 提供 Authentication(认证)、Authorization(授权)和 Accounting(计费)三种安全功能。 • 认证:验证用户是否可以获得网络访问权。 • 授权:授权用户可以使用哪些服务。 •…

AOP切面加自定义注解,实现日志记录

AOP切面加自定义注解,实现日志记录 一、AOP二、准备工作三、添加AOP,把日志保存到数据库 一、AOP 在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实…

debug调试高级功能 断点、布局 及Android Studio常用快捷按键使用详情

文章目录 debug断点篇:打临时断点(只用一次):alt断点条件断点:在断点上,点击右键,在Condition那里,设置我们需要的值,循环就会自动停到我们设置的那个值那里依赖断点&…

Markdown如何分页操作

Markdown导出分页操作 在平时的文档导出过程中Markdown过程中会出现因为不能分页导致的排版问题。 排版问题在将Markdown文档导出为PDF或其他格式时尤为明显。当文档内容超过一页时,无法自动调整页面布局,导致内容不连续,甚至导致图片或表格…

pve8群晖rr方式安装(编译失败检查网络或磁盘空间error 23:200问题解决)

PVE 篇二:2024年PVE8最新安装使用指南|安装黑群晖|img格式镜像安装_NAS存储_什么值得买 (smzdm.com) 黑群晖 篇五:2023黑群晖最新安装方式|RR新手也可轻松上手_NAS存储_什么值得买 (smzdm.com) 编译引导提示:检查网络或磁盘空间er…

qt dll编写和调用

dll编写 新建项目 头文件 #ifndef LIB1_H #define LIB1_H#include "lib1_global.h"class LIB1_EXPORT Lib1 { public:Lib1(); };//要导出的函数,使用extern "C",否则名称改变将找不到函数extern "C" LIB1_EXPORT int ad…

程序员的核心职业素养:专业、沟通与持续学习

✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您的点赞、关注、收藏、评论,是对我最大…

单片机第五季-第八课:STM32CubeMx和FreeRTOS

1,FreeRTOS背景介绍 RTOS简介: 实时操作系统,本用于追求实时性的嵌入式系统,典型:ucos/uclinux/vxworks; 特点:中断响应快、一般可嵌套中断、使用实地址、多任务; (实…

中国历年人均发电量统计报告

数据来源于国家统计局,为1978年到2020年我国每年的人均发电量数据。 2020年,我国人均发电量为5512.76千瓦时,比上年增长3.4%。 数据统计单位为:千瓦时 我国人均发电量有多少? 2020年,我国人均发电量为5512…

一键自动粘贴,高效处理邮箱地址,让你的工作效率翻倍提升!

在信息爆炸的时代,邮箱地址已成为我们日常工作和生活中的必备元素。无论是商务沟通、报名注册还是信息传递,邮箱地址都扮演着至关重要的角色。然而,手动复制粘贴邮箱地址的繁琐操作往往让人头疼不已,不仅效率低下,还容…

代码随想录第29天|贪心算法part3

134.加油站 首先如果总油量减去总消耗大于等于零那么一定可以跑完一圈 每个加油站的剩余量rest[i]为gas[i] - cost[i] 从0开始累加rest[i],和记为curSum,一旦curSum小于零,说明[0, i]区间都不能作为起始位置 因为我们一直维护的是一个剩余量大…