很多程序都要求用户输入某种信息,

例如:

  让用户存储游戏首选项或提供要可视化的数据,程序把用户的信息存储在列表和字典等数据结构中,

用户关闭程序时,我们几乎总要保存他们提供的信息;

如何保存——

 一种简单的方式是使用模块json来存储数据。

JSON(JavaScript Object Notation)

    模块json让我们能够将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。

不仅如此,JSON还可以让我们在python程序之间分享数据,更重要的是JSON数据格式并非Python专用的,

JSON格式的数据可以与其他程序员使用其他脚本存储的方式互通。

json.dump() 保存文件

 范例:

#!/usr/bin/env python

#filename = wr_num.py

 import json

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

file_name = 'numbers.json'       ①

with open(file_name, 'w') as f_obj:  ②

    json.dump(numbers , f_obj)    ③

这段代码块中,首先导入了模块json,然后配置了一个list

在 ① 处,指定了这个要将这个列表存储的文件名:number.json

在 ② 处,通过w的方式打开文件,

在 ③ 处,通过函数json.dump()将数字列表存储到文件中

效果:

[root@Python-Test Alben-PY]# ./wr_num.py
[root@Python-Test Alben-PY]# more numbers.json
[1, 2, 3, 4, 5, 6, 7]

json.load() 读取文件

#!/usr/bin/env python

#filename = rd_num.py

 

import json

"""导入模块JSON"""

file = 'numbers.json'

"""定义文件"""

with open(file) as f_obj:

    """打开文件"""

    numbers = json.load(f_obj)

    #使用函数json.load()读取文件内容,并保存为变量 numbers

print(numbers)

效果:

[root@Python-Test Alben-PY]# ./rd_num.py
[1, 2, 3, 4, 5, 6, 7]
[root@Python-Test Alben-PY]#

小测试:

编写一个脚本,含如下功能

用户首次打开,提示输入名字,并告知用户该程序有记忆功能,下次打开可以直接问好。

代码:

#!/usr/bin/env python

 

import json

 

file = 'greet_name.json'

#定义存储名字的文件名

 

try:

    with open(file) as f_obj:

        username = json.load(f_obj)

except FileNotFoundError:

#如果文件不存在,默认会有一个TraceBack:FileNotFoundError#

#使用except后可以取消TraceBack,同时允许except中的代码块#

    username = input("What is your name? \n:")

    with open(file ,'w') as f_obj:

        json.dump(username,f_obj)

        print("We'll remember you when you come back, " + username + '!')

    #这个代码块中就是与用户进行交互,要求输入名字

else:

    print("Welcome back, " + username +'!')

#如果文件能够顺利打开,并且json.load()函数能够读取内容,则运行这段print#

效果如下:

[root@Python-Test Alben-PY]# ./rem_name.py
What is your name?
:alben
We'll remember you when you come back, alben!
[root@Python-Test Alben-PY]# ./rem_name.py
Welcome back, alben!
[root@Python-Test Alben-PY]#

可以看到,第一次运行的时候,会提示输入名字,

而第二次运行就直接welcome back了。这是因为第一次运行后生成了文件 greet_name.json

[root@Python-Test Alben-PY]# ll greet*
-rw-r--r--. 1 root root 7 May 15 08:01 greet_name.json

python中的JSON(1)的更多相关文章

  1. python中的 json 模块使用

    (1)python 中生成 json 字符串: import json data = dict(ret=0, msg="Welcome, Login success!") json ...

  2. 在 Python 中使用 JSON

    在 Python 中使用 JSON 本教程将会教我们如何使用 Python 编程语言编码和解码 JSON.让我们先来准备环境以便针对 JSON 进行 Python 编程. 环境 在我们使用 Pytho ...

  3. 【python】python中的json、字典dict

    定义 python中,json和dict非常类似,都是key-value的形式,而且json.dict也可以非常方便的通过dumps.loads互转.既然都是key-value格式,为啥还需要进行格式 ...

  4. Python中的json操作

    Python中的json操作 标签(空格分隔): python 编码 json 字符串前缀问题 字符串前缀可以有r,u r:表示原始(raw)字符串,比如'\n'不会被转义.常用于正则. u:表示un ...

  5. python中读取json文件报错,TypeError:the Json object must be str, bytes or bytearray,not ‘TextIOWrapper’

    利用python中的json读取json文件时,因为错误使用了相应的方法导致报错:TypeError:the Json object must be str, bytes or bytearray,n ...

  6. python中的json的基本使用方法

    在python中使用json的时候,主要也就是使用json模块,json是以一种良好的格式来进行数据的交互,从而在很多时候,可以使用json数据格式作为程序之间的接口, #!/usr/bin/env ...

  7. Python中的json学习

    p.p1 { margin: 0; font: 14px ".PingFang SC"; color: rgba(53, 53, 53, 1) } p.p2 { margin: 0 ...

  8. python 中的json解析库

    当一个json 数据很大的时候.load起来是很耗时的.python中常见的json解析库有cjson,simplesjson,json, 初步比较了一下, 对于loads来讲 simplejson ...

  9. 在Python中进行JSON转化

    序列化,指的是把内存中的变量(如类的实例)变成可存储或可传输的过程. JSON(JavaScript Object Notation, JavaScript对象表示)是网络传输中经常使用的一种数据形式 ...

  10. Python中模块json与pickle的功能介绍

    json & pickle & shelve 1. json的序列化与反序列化 json的使用需要导入该模块,一般使用import json即可. json的序列化 方法1:json. ...

随机推荐

  1. 一套常用的css初始化样式

    @charset "UTF-8"; /*css 初始化 */ html, body, ul, li, ol, dl, dd, dt, p, h1, h2, h3, h4, h5, ...

  2. Apache2.4.23+PHP5.6.30+MySQL5.7.18安装教程

    最近在工作中常常接触到PHP,自己也写过一些简单的PHP页面.我们知道PHP是在服务器端运行的脚本语言,因此我们需要配置服务器环境.之前为了省事直接使用的是wamp集成环境,但是突然某一天领导要求我们 ...

  3. 【mysql】关于InnoDB表text blob大字段的优化

    最近在数据库优化的时候,看到一些表在设计上使用了text或者blob的字段,单表的存储空间已经达到了近100G,这种情况再去改变和优化就非常难了 一.简介 为了清楚大字段对性能的影响,我们必须要知道i ...

  4. sql连接查询中on筛选与where筛选的区别

    sql查询这个东西, 要说它简单, 可以很简单, 通常情况下只需使用增删查改配合编程语言的逻辑表达能力,就能实现所有功能. 但是增删查改并不能代表sql语句的所有, 完整的sql功能会另人望而生畏. ...

  5. 学习vue 20天,我写了点东西

    往昔 最初团队里使用Angularjs进行开发,刚开始还好,到了项目后期越发感觉Angularjs太重了,以至于后来重构项目时,毅然放弃Angularjs,投入了Vue的怀抱.除了组建团队时,是我搭建 ...

  6. Jquery Validation 验证控件的使用说明

    转载自:http://blog.csdn.net/huang100qi/article/details/52453970,做了一些简化及修改 下载地址:https://jqueryvalidation ...

  7. 软件工程工具学习(1)---Visio

    要给15级软件工程上机了.开个系列记录软件工程开发过程中所会用到的一些工具的学习. 第一篇---软件分析与设计工具 Microsoft Visio Visio 介绍 1.Visio是一款矢量图形与图标 ...

  8. CF 690C3. Brain Network (hard) from Helvetic Coding Contest 2016 online mirror (teams, unrated)

    题目描述 Brain Network (hard) 这个问题就是给出一个不断加边的树,保证每一次加边之后都只有一个连通块(每一次连的点都是之前出现过的),问每一次加边之后树的直径. 算法 每一次增加一 ...

  9. Lucene工作原理

    Lucene是一个高性能的java全文检索工具包,它使用的是倒排文件索引结构.该结构及相应的生成算法如下: 0)设有两篇文章1和2 文章1的内容为:Tom lives in Guangzhou,I l ...

  10. 物理提取大绝招”Advanced ADB”???

    近来手机取证有个极为重大的突破,是由手机取证大厂Cellebrite所率先发表的"Advanced ADB" 物理提取方法,此功能已纳入其取证设备产品UFED 6.1之中. 这个所 ...