python 如何存储数据 (python 的文件和异常)

news2024/9/23 5:33:55

文章目录

        • 存储数据
          • 1. 使用 json.dump() 和 json.load()
            • json.dump()
          • 2. 保存和读取用户生成的数据

存储数据

很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据。不管专注的是什么,程序都把用户提供的信息存储在列表和字典等数据结构中。用户关闭程序时,你几乎总是要保存他们提供的信息;一种简单的方式是使用模块
模块 json 让你能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。你还可以使用 json 在 python 之间分享数据。更重要的是 json 数据格式并非 python专用的,这让你能够将以 json格式存储的数据与使用其他编程语言的人分享。
JavaScriptObjectNotation(json 数据格式最初是为javascript开发的)

1. 使用 json.dump() 和 json.load()

现在,我们来编写一个 存储一组数字的简短程序,再编写一个将这些数字读取到内存中的程序。

第一个程序,使用 json.load() 来存储这组数组。
第二个程序,将使用 json.dump()


json.dump()

接收两个实参:要存储的数据以及可用于存储数据的文件对象。

import json

numbers = [0,1,2,3,4,5,6,7,8,9]

filename = 'numbers.json'

with open(filename,'w') as f_obj:
	json.dump(numbers,f_obj)

我们先导入 json模块,然后在创建存储数字元素的列表。

我们看一下 json 文件中有没有成功写入进列表的元素:
在这里插入图片描述


json.dump() 函数的示例 我们已将内容成功写入到文件中了,
现在,我们来尝试一下 json.load() 函数 的写入内存效果:

import json

filename = 'numbers.json'

with open(filename,'r+') as f_obj:
	numbers = json.load(f_obj)

print(numbers)

在这里插入图片描述
这两个示例,其实就是 json.dump() 函数和 json.load() 函数的使用说明,
而且这两个示例,也是一种在程序之间共享数据的简单方式。

2. 保存和读取用户生成的数据

对于用户生成的数据,使用 json保存它们大有裨益,因为如果不以某种方式进行存储,等程序停止运行时用户的信息将丢失。

我们来看这样的一个例子:
用户首次运行程序时被提示输入自己的名字,这样再次运行程序时就记住他了。

我们先来存储该用户的名字:

import json

userName = input('请输入您登陆系统的用户名称~')
userInfo = 'userInfo.json'

with open(userInfo,'w') as f_obj:
	json.dump(userName,f_obj)

print('您好!'+userName+',您已成功登陆系统!')

先看一下代码的运行结果:
在这里插入图片描述

在来看一下 json 文件中有没有存储进 用户的信息

import json

userInfo ='userInfo.json'

with open(userInfo,'r') as f_obj:
	username = json.load(f_obj)
print(username)

在这里插入图片描述
现在我们将这两个示例结合到一起,
让用户来登陆系统,我们读取存储用户信息的文件时,如果用户信息存在,那么就进行读取,如果不存在,就会出现错误,这时,我们使用 expect 代码块 来处理 用户操作界面出现的异常信息友好化。

import json

userInfo = 'user.json'

try:
	with open(userInfo) as f_obj:
		name = json.load(f_obj)
except FileNotFoundError:
	print('您还未登录过本系统,请先确订登录名称')
	username = input('请确定名称:')
	
	with open(userInfo,'w') as f_obj:
		json.dump(username,f_obj)
		print('系统已经您的登录名为:'+username)
else:
	print('欢迎您回到系统:'+name)

我们先将存储 json文件名称的变量设置好,也就是存储用户登录信息的json文件。
然后在 try 语句块中,读取用户存储信息的文件,如果读取到信息,就在 else语句中输出其对应语句。如果读取不到内容,就说明用户是首次登录,这时,没读取到,就会出现异常错误信息,但因为我们设置了 except语句块,所以用户看不到 FileNotFoundError异常,而是提示用户首次登录,需要设置登录名。

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

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

相关文章

这些个 axios 工具函数,你都掌握了吗

前言 周末过得真快,看个源码时间就过去了👀。 在上周看做项目的时候看到了项目里封装的 axios,对其封装的原理没有弄清楚,于是周末的时候便抽了点空闲时间来看了看 axios 的源码,将其研究研究。 源码阅读 这里就不…

实战:一天开发一款内置游戏直播的国产版Discord应用【附源码】

游戏直播是Discord产品的核心功能之一,本教程教大家如何1天内开发一款内置游戏直播的国产版Discord应用,用户不仅可以通过IM聊天,也可以进行语聊,看游戏直播,甚至自己进行游戏直播,无任何实时音视频底层技术…

数据增广真有那么神奇吗?

作者:皮皮雷 来源:投稿 编辑:学姐 论文题目 How Effective is Task-Agnostic Data Augmentation for Pretrained Transformers? 论文作者 S. Longpre, Y. Wang, and C. DuBois 论文发表于 2020 EMNLP findings 摘要 任务无关的数据增广…

chatgpt功能展示

Chatgpt 不知道大家刷抖音的时候是否刷到了人工智能要取代人类的一些短视频,他们所提到的主角就是一个AGI模型——chatgpt,资本对其的追求程度可以用火爆🔥来形容了吧,先给大家讲一下chatgpt吧,如果没兴趣看我扯犊子可…

网络安全入门学习:社会工程学

在电影《我是谁:没有绝对安全的系统》中,主角本杰明充分利用自己高超的黑客技术,非法入侵国际安全系统,并在最后逃之夭夭。在电影中,有一句经典的台词: 所有黑客手段中最有效的、最伟大的幻想艺术——社会…

windows10安装ubantu双系统

windows10安装ubantu双系统 文章目录windows10安装ubantu双系统一、安装前准备1.前期说明2.制作U盘启动器3.设置硬盘分区相关4.设置给ubantu系统的硬盘大小,设置为未分配(删除卷)二、进行安装1.设置bios相关2.进入bios启动界面选择U盘安装3.进…

快速入门 Python 数据分析实用指南

Python 现如今已成为数据分析和数据科学使用上的标准语言和标准平台之一。那么作为一个新手小白,该如何快速入门 Python 数据分析呢? 下面根据数据分析的一般工作流程,梳理了相关知识技能以及学习指南。 数据分析一般工作流程如下&#xff…

北京移动CM311-5s-ZG_GK6323V100C_2+8_免拆一键卡刷固件包

北京移动CM311-5s-ZG_GK6323V100C_28_免拆一键卡刷固件包 特点: 1、适用于对应型号的电视盒子刷机; 2、开放原厂固件屏蔽的市场安装和u盘安装apk; 3、修改dns,三网通用; 4、大量精简内置的没用的软件,…

【蓝桥杯试题】递归实现排列型枚举

💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:蓝桥杯试题 文章目录1. 题目描述2. 代码展示法一:dfs法二:next_perm…

Android开发如何自定义View实现圆弧进度效果

在Android开发中,通过自定义View实现自己想要的效果是作为android开发程序员的一项必备技能,自定义View对于android开发来说也是比较难的一项技术。 涉及到的知识Canvas(画布),Paint(画笔),自定…

​35岁+的年龄不仅能进入大厂,还能年收入百万+,原来吃透这些才是关键

本人985院校毕业,华为工作10年,创业3年,现在另一大厂,年收入百万 华为期间岗位从测试工程师,到测试经理,再到项目经理,现35岁的年龄进入另一个大厂。这期间面试过上千人,也管理过几…

Qt QMessageBox详解

文章目录一.QMessageBox介绍枚举属性函数二.QMessageBox的用法1.导入QMessage库2.弹窗提示3.提供选项的弹窗提示4.作为提示,报警,报错提示窗口一.QMessageBox介绍 文本消息显示框(message box)向用户发出情况警报信息并进一步解释警报或向用户提问&…

Git学习:IDEA项目上传到码云

5分钟学习创建项目上传到git服务器 文章目录前言一、gitee创建项目?1、gitee创建项目2、IDEA在本地创建项目3、找到git下载好git程序4、 找到git安装目录 bin目录下的 git.exe 文件5、进行操作(提交代码到Gitee)6、 上传成功(刷新…

vue 解决问题:Webpack安装不成功,webpack -v无法正常显示版本号

目录 一、解决问题:Webpack安装不成功,webpack -v无法正常显示版本号 二、解决问题: ERROR Error: Cannot find module webpack-log 三、 解决报错:error:03000086:digital envelope routines::initialization error 四、解决…

Java设计模式笔记——七大设计原则

系列文章目录 第一章 Java 设计模式之七大设计原则 文章目录系列文章目录前言一、单一职责原则1.案例分析2.改进二、开闭原则1.案例分析2.改进三、里氏替换原则1.案例分析2.改进四、依赖倒转原则五、接口隔离原则1.案例分析2.改进六、合成复用原则1.案例分析2.改进七、迪米特原…

PythonWeb Django PostgreSQL创建Web项目(三)

了解Django框架下如何配置数据库链接与创建模型和应用 使用Django创建web项目,首先需要了解生成的项目文件结构,以及对应文件功能用途方可开始web项目页面创建,下方先介绍文件功能,之后再配置数据库连接以及管理创建模型与应用&a…

招生咨询|浙江大学MPA项目2023年招生问答与通知

问:报考浙江大学MPA的基本流程是怎么样的? 答:第一阶段为网上报名与确认。MPA考生须参加全国管理类联考,网上报名时间一般为10月初开始、10月下旬截止,错过网上报名时间后不能补报。确认时间一般为11月上旬&#xff0c…

如何提高软件测试效率 降低开发成本?

1、单元测试以开发人员为主 测试分工需根据测试人员的特点进行,而单元测试应以开发人员为主,以保障每个单元能够完成设计的功能。集成测试也可以以开发人员为主进行。当软件体系结构完成后,独立测试人员应尽量选择比较熟悉相关领域的人员。​…

三、Spring的入门程序

第一个Spring程序 创建新的空工程spring6 设置JDK版本17&#xff0c;编译器版本17 设置IDEA的Maven&#xff1a;关联自己的maven 在空的工程spring6中创建第一个maven模块&#xff1a;spring6-001-first 在pom.xml添加spring context依赖和junit依赖&#xff0c; <?x…

基于轻量级YOLO开发构建中国象棋目标检测识别分析系统

关于棋类相关的项目在我之前的博文里面都有做过&#xff0c;如下&#xff1a;《yolov5s融合SPD-Conv用于提升小目标和低分辨率图像检测性能实践五子棋检测识别》《YOLOV5融合SE注意力机制和SwinTransformer模块开发实践的中国象棋检测识别分析系统》《基于yolov5s实践国际象棋目…