MyPython-->进阶篇-->存储数据json

存储数据

程序要将用户提供的信息储存在列表和字典等数据结构中。用户关闭程序时,你几乎总是要保存他们的信息 一种简单的方式是使用模块json来存储数据

模块json能将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。还可以使用json在python程序之间分享数据,更重要的是,json数据格式并非python专用,这让你能够将以json格式储存的数据与其他编程语言的人分享。

Json 格式最初是由JavaScript开发的,但随后成了一种常见的格式

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

我们来编写一个存储一组数字的简短程序,再编写一个将这些数字读取到内存中的程序,第一个程序使用json.dump()来储存这组数字,第二个程序将使用json.load()

函数json.dump()接受两个实参:要储存的数据以及可以用于存储数据的文件对象。下面是演示

import json
number = [1,2,3,5]
file_name = ‘number.json‘ #通过扩展名指纹文件存储的数据为json格式
with open(file_name,‘w‘) as file_object:
    json.dump(number,file_object)

我们先导入json模块,再创建一个是数字列表,我们指定存放在number.json里,文件后缀是.json来指出文件存储的数据是json格式,我们再以写入模式打开文件,让json能见数据写入其中使用json.dup()将数据写入,我们没有写输出语句,打开这个文件查看,数据存储的格式与python一样

注意json.dump()方法,传递两个参数 第一个要写入的,第二个要存储的位置

再写一个程序,使用json.load()读取到内存中

with open(filename,‘r‘) as file_object:
    contents = json.load(file_object)
print(contents)

这是在程序间共享数据的简单方式

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

对于用户输入的数据,用json来保存大有裨益,因为如果不以某种方式进行存储,等程序停止运行时用户的信息将丢失。 看一个例子

用户首次运行程序时被提示输入自己的名字,再次运行程序时就记住他了

我们先储存名字

ipt = input(‘enter your name‘)
filename1 = ‘name.json‘
with open(filename1,‘w‘) as file_object:
    json.dump(ipt, file_object)

再读取之前存储的名字

with open(filename1,‘r‘) as file_object:
    name_ipt = json.load(file_object)
print(‘wleccome %s‘%name_ipt)

我们将这两个程序合并到一个内,在执行的时候先去name.json尝试获得用户名,如果没有这文件,用try-except处理这个错误,并入用户输入名字并保存到name.json中

filename1 = ‘name.json‘
try:
    with open(filename1)as file_object:
        username = json.load(file_object)
except FileNotFoundError:
    with open(filename1,‘w‘) as file_object2:
        user_ipt = input(‘enter your name i will rember you‘)
        json.dump(user_ipt,file_object2)
else:
    print(username)

重构

我们经常遇到代码能运行,但可以进一步的改进 将代码划分为一些类完成具体工作的函数,这样的过程称为重构。  重构让代码更清晰更容易理解更容易扩展。

以上代码主要功能是问候用户,我们把所有的代码放到名为greet_user()函数中

def greet_user():
    ‘‘‘问候用户 并指出其名字‘‘‘
    filename1 = ‘name.json‘
    try:
        with open(filename1)as file_object:
            username = json.load(file_object)
    except FileNotFoundError:
        with open(filename1,‘w‘) as file_object2:
            user_ipt = input(‘enter your name i will rember you‘)
            json.dump(user_ipt,file_object2)
    else:
        print(username)
        

但是greet_user()不仅问候了用户,还在储存了用户名时获取他,没有的时候提示用户输入一个,我们将对greet_user()函数重构,让存储用户名的代码转移到另一个函数

def get_savename(filename):
    ‘‘‘将获取用户名没有返回none‘‘‘
    try:
        with open(filename) as file_object:
            sname = json.load(file_object)
            return sname
    except FileNotFoundError:
        return None
def get_newname(filename):
    ‘‘‘没有的时候提示玩家输入并存储‘‘‘
    with open(filename,‘w‘) as file_object:
        newname = input(‘enter you name i will rember you‘)
        json.dump(newname,file_object)
        return newname
def geet_username(filename):
    ‘‘‘主函数 如果name有读取,如果没有输入‘‘‘
    user_name =get_savename(filename)
    if user_name:
        print(user_name)
    else:
        newname = get_newname(filename)
        print(newname)
geet_username(‘name.json‘)
时间: 2024-08-09 16:18:16

MyPython-->进阶篇-->存储数据json的相关文章

Cocos2d-x3.0游戏实例之《别救我》第十篇(完结)——用Json配置各类型怪物数据

现在我们有2种类型的怪物,而且创建的时候是写死在代码里的,这是要作死的节奏~ 所以,必须可配置,不然会累死人的. 笨木头花心贡献,啥?花心?不呢,是用心~ 转载请注明,原文地址: http://www.benmutou.com/blog/archives/949  文章来源:笨木头与游戏开发 Json文件 什么是Json文件?说白了,它就是一个文本文档,只不过它的内容是按照一定的规则填写的. 于是,我们就可以按照那个规则去读取这份文档. 这,就是配置文件产生的缘由(才怪). (小若:才怪是什么意

python3下scrapy爬虫(第九卷:scrapy数据存储进JSON文件)

将爬取数据存储在JSON文件里并不难,只需修改pipelines文件 直接看代码: 来看下结果: 中文字符恶心的很 之后我会在后卷中做出修改 原文地址:https://www.cnblogs.com/woshiruge/p/8401353.html

8.7 JSON存储数据方式(JavaScript对象表示法)

JSON JavaScript 对象表示法(JavaScript Object Notation) 是一种存储数据的方式. 一.创建JSON对象 var gareen = {"name":"盖伦","hp":616}; 这样就创建了一个JSON 对象 JSON对象由 名称/值对组成 名称和值之间用冒号:隔开 名称必须用双引号" 包含起来 值可以是任意javascript数据类型,字符串,布尔,数字 ,数组甚至是对象 不同的名称/值对之间

IOS开发——UI进阶篇(十一)应用沙盒,归档,解档,偏好设置,plist存储,NSData,自定义对象归档解档

1.iOS应用数据存储的常用方式XML属性列表(plist)归档Preference(偏好设置)NSKeyedArchiver归档(NSCoding)SQLite3 Core Data 2.应用沙盒每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒应用沙盒的文件系统目录,如下图所示(假设应用的名称叫Layer)模拟器应用沙盒的根路径在: (apple是用户名, 8.0是模拟器版本)/Users/apple/Libra

Python之路【第十七篇】:Django【进阶篇 】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

Python之路【第十七篇】:Django之【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

Python之路【第十七篇】:Django【进阶篇】

Python之路[第十七篇]:Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost')

jqGrid 学习笔记整理——进阶篇(二)

jqGrid 学习笔记整理--进阶篇(二 ) 本篇开始正式与后台(java语言)进行数据交互,使用的平台为 JDK:java 1.8.0_71 myEclisp 2015 Stable 2.0 Apache Tomcat-8.0.30 Mysql 5.7 Navicat for mysql 11.2.5(mysql数据库管理工具) 一.数据库部分 1.创建数据库 使用Navicat for mysql创建数据库(使用其他工具或直接使用命令行暂不介绍) 2.创建表 双击打开上步创建数据库--右击T

Django【进阶篇 】(地阶段位二)

Django[进阶篇 ] Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 import MySQLdb def GetList(sql): db = MySQLdb.connect(user='root', db='wupeiqidb', passwd='1234', host='localhost') cursor = db.cur