[python入门㊷] - python存储数据

news2024/11/25 18:30:02

目录

❤  json.dump()存储数据

❤  json.laod()读取数据

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

❤  重构


JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式,被包括Python在内的众多语言采用

❤  json.dump()存储数据

函数 json.dump() 接受两个实参:要存储的 数据 以及可用于存储数据的 文件对象
语法:json.dump(存储数据,文件名)
import json
numbers = [1,2,3,4,5,6]
file_name = 'TestDump.json'
with open(file_name,'w') as file_obj:
    json.dump(numbers,file_obj)

❤  json.laod()读取数据

语法:json.load(文件名)

下面是我们读取数据文件TestDump.json内容的程序

import json
file_name = 'TestDump.json'
with open(file_name) as file_obj:
    numbers = json.load(file_obj)
print(numbers)

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

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

import json
username = input("what is your name?")

filename = 'username.json'
with open(filename,'w') as file_obj:
    json.dump(username,file_obj)
    print("we will remeber when you come back," + username+"!")

输出:

what is your name?olover
we will remeber when you come back,olover!

我们提示输入用户名,并将其存储在一个变量中,接下来,我们又调用json.dump(),并将用户名和一个文件对象传递给他,从而将用户名存储在文件中。

import json
file_name = 'username.json'
with open(file_name) as f_obj:
    username = json.load(f_obj)
    print("Welcome back,"+username+"!")

 输出:

Welcome back,olover!

我们将两个程序合并到一个程序中。在这个程序运行时,我们将尝试从文件username.json中获取用户名,因此我们首先编写一个尝试恢复用户名的try代码块。当文件不存在的时候,我们就在except中提示输入用户名,并将其存储到username.json文件中,以便程序再次运行时获取它。

import json
#如果以前存储了用户名,就加载它,否则,就提示用户输入用户名
file_name = 'username.json'
try:
    with open(file_name) as f_obj:
        username = json.load(f_obj)
except FileNotFoundError:
    username = input("what is your name?")
    with open(file_name,'w') as f_obj:
        json.dump(username,f_obj)
        print("we'll remeber you when you come back,"+username+"!")
else:
    print("Welcome back,"+username+"!")

 输出:

Welcome back,olover!

 ❤  重构

你经常会遇到这样的情况:代码能够正确运行,但可做进一步的改进,将代码划分为一系列完成具体工作的函数,这个过程称为重构

import json
def greet_user():
    '''问候用户,并指出其名字'''
    file_name = 'username.json'
    try:
        with open(file_name) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        username  = input("what is your name?")
        with open(file_name,'w') as f_obj:
            json.dump(username,f_obj)
            print("we'll remeber you when you come back,"+username+"!")
    else:
       print("Welcome back,"+username+"!")
#调用函数
greet_user()

或许有人觉得,上面的程序执行的任务太多了,我们不想它执行那么多任务,我们首先将获取存储的用户名的代码移到另外一个函数中:

提取存在文件时执行操作

import json
def  get_stored_username():
    '''如果存储了用户名,就获取它'''
    file_name = 'username.json'
    try:
        with open(file_name) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
       return username
def greet_user():
    '''问候用户,并指出其名字'''
    username = get_stored_username()
    if username:
        print("Welcome back," + username + "!")
    else:
        username = input("what is your name?")
        file_name = 'username.json'
        with open(file_name, 'w') as f_obj:
            json.dump(username, f_obj)
            print("we'll remeber you when you come back," + username + "!")
#调用函数
greet_user()

新增的函数get_stored_username()目标很明确,如果文件存储了用户名,这个函数就获取并返回它,如果文件不存在,这个函数就返回None,这是一种不错的方法:函数要么返回预期的值,要么返回None.

提取没有存储用户名时提示用户输入的操作

上面的程序还可以继续优化,将greet_user()中的另外一块代码提取出来:将没有存储用户名时提示用户输入的代码放在一个独立的函数中

import json
def  get_stored_username():
    '''如果存储了用户名,就获取它'''
    file_name = 'username.json'
    try:
        with open(file_name) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        return None
    else:
       return username
def get_new_username():
    '''提示用户输入用户名'''
    username = input("what is your name?")
    file_name = 'username.json'
    with open(file_name,'w') as f_obj:
        json.dump(username,f_obj)
        return username
def greet_user():
    '''问候用户,并指出其名字'''
    username = get_stored_username()
    if username:
        print("Welcome back," + username + "!")
    else:
        username = get_new_username()
        print("we'll remeber you when you come back," + username + "!")
#调用函数
greet_user()

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

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

相关文章

基本TCP编程

1. 基本概念 TCP (即传输控制协议) 是一种面向连接的传输层协议,它能提供高可靠性通信 (即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。 2. 通信流程解析 TCP 通信的流程与打电话的过程相似,以下以一对情侣打电话的过程来展示TCP的通信流程: 其中服务端 …

4.4 序列化与反序列化

文章目录1.概述2.特点/应用场景3.涉及到的流对象4.代码实现序列化与反序列化4.1 步骤1:创建学生类Student24.2 步骤2:创建序列化测试类5.测试案例中常见的几种编译错误类型6.为什么反序列化版本号需要与序列化版本号一致?7.自动提示 生成UID …

10 亿月活用户下,快手基于 Dragonfly 的超大规模镜像分发实践

背景 挑战 快手容器云平台旨在为快手不断增长、不断变化和多样化的业务,提供基于容器化部署的超大规模基础设施服务。为了实现这一目标,快手工程师需要解决弹性、稳定性、效率和无服务器架构等挑战,在这些挑战中,镜像分发的稳定…

职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!

我是制造企业的IT中心的研发人员,平常工作就是配合业务部门出出报表,选型一些商业软件,并在内部负责实施运维。最近领导出去参观了一些数字化转型比较领先的工厂和制造企业,回来就甩给我几张图,问能不能我们也做几个这…

4. sql 语句中常用命令

1. 数据表: 本文中所有命令,测试的数据表结构如下图: 2. 查询语句: 2.1 基础查询:select //查询单个字段: select 字段名 from 表名; //查询多个字段 select 字段名1,字段名2,... from 表名; //查询所…

数据库的安装部署

目录 方法一:仓库安装 一、添加MySQL仓库 二、安装装MySQL 三、启动MySQL服务器 方法二:本地安装 一、使用以下执行清理之前实验MySQL仓库安装的数据库: 二、网上下载mysql的安装包 三、将下载好的文件传入Redhat中的某个路径中 …

CentOS7安装配置OpenVNP连接远端服务器

在项目当中需要访问一个三方接口及数据库,但是需要在CentOS7服务器上先配置OpenVPN,然后才能连接,现将整体配置过程记录如下。 安装 yum -y install epel-release yum -y install openvpn 查看版本 openvpn --version 配置客户端证书 打开…

电脑ip地址查询要怎么做?查询IP地址就看这3种方法

电脑无法运转时,我们需要别人的帮忙的话,那就需要知道自己电脑的IP地址是什么。但是很多人不知道该从电脑哪里找到IP地址。电脑ip地址查询就看下面2种方法,让你轻松就能Get到技巧! 操作环境: 演示机型:华为…

【数据库】 数据库的理论基础详解

目录 一, 什么是数据库 二, 数据库管理系统(DBMS) 三,数据库与文件系统的区别 1,对比区别: 2,优缺点总结: 四,数据库的发展史 五,常见数据库 1, 关系型…

vue directive 注册局部指令

注册局部指令 vue directive 在注册局部指令时,是通过在组件 options 选项中设置 directives 属性。如下: directives: {focus: {// 指令的定义inserted: function (el) {el.focus()}} }在模板中的任何元素上都可以使用新的 v-focus property&#xff…

前端登录状态验证Session和Token的区别

(1)Session客户端发送一个登录请求,服务器验证登录数据无误,会生成一个sessionID,此ID对应的值即登录状态为已登录。服务器有一个key-value映射表,会把这个ID和登录状态存到此表中。服务器返回的响应头的se…

好用的iPhone 数据恢复软件精选

随着 Apple 的 iTunes / iCloud 备份服务的兴起,我们总是假设这些信息在我们需要的时候可以随时访问。然而,事实是,意想不到的“不幸”发生了,比如 iOS 升级失败、忘记密码,或者更严重的情况,如进水或被盗。…

Ansible的脚本------playbook剧本

一、剧本的前置知识点1、主机清单ansible默认的主机清单是/etc/ansible/hosts文件主机清单可以手动设置,也可以通过Dynamic Inventory动态生成一般主机名使用FQDNvi /etc/ansible/hosts [webserver] #使用方括号设置组名 www1.example.org #定…

想要精通算法和SQL的成长之路 - 接雨水

想要精通算法和SQL的成长之路 - 接雨水前言一. 接雨水前言 想要精通算法和SQL的成长之路 - 系列导航 一. 接雨水 原题链接 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。 输入:height [0,…

【RabbitMQ】注册成功后的通知操作

目录前提说明代码实现1. 依赖2. 配置类3. 生产方创建测试类,目的:查看是否队列交换机创建成功,且在队列里面是否有一条待消费的信息。4. 消费方最后前提说明 背景条件:主要是自己学完了RabbitMQ后,想自己多去动手实践…

基于SSM的教务管理系统设计与实现

技术:Java、JSP等摘要:伴随着数字化、网络化、信息化发展的社会,越来越多的行业与时俱进融入到了互联网中,而高校作为为了一个更是培养各色人才之地,更是拥有大量的高科技人才,因此也更应该运用科技来完善教…

单片机开发---ESP32S3移植NES模拟器(二)

书接上文 《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl触摸屏》 《单片机开发—ESP32S3移植NES模拟器(一)》 暖场视频,小时候称这个为—超级曲线射门!!!!!&am…

Linux 安装jenkins和jdk11

Linux 安装jenkins和jdk111. Install Jdk112. Jenkins Install2.1 Install Jenkins2.2 Start2.3 Error3.Awakening1.1 Big Data -- Postgres4. Awakening1. Install Jdk11 安装jdk11 sudo yum install fontconfig java-11-openjdk 2. Jenkins Install 2.1 Install Jenkins 下…

八、Linux文件 - 文件IO与标准IO的区别

目录 1.Linux标准文件描述符 2.缓存的概念 1.Linux标准文件描述符 文件描述符缩写描述0STDIO标准输入1STDOUT标准输出2STDERR标准错误输出文件IO:是直接调用内核提供的系统调用函数,头文件时unistd.h标准IO:是间接调用系统调用函数&#x…

C语言经典编程题100例(21-40)

21、练习3-2 计算符号函数的值对于任一整数n,符号函数sign(n)的定义如下:请编写程序计算该函数对任一输入整数的值。输入格式:输入在一行中给出整数n。输出格式:在一行中按照格式“sign(n) 函数值”输出该整数n对应的函数值。输入样例1:10输出样例1:sig…