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

例如:

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

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

如何保存——

 一种简单的方式是使用模块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

转载于:https://www.cnblogs.com/alben-cisco/p/6854562.html

python中的JSON(1)相关推荐

  1. 在python中使用json格式存储数据

    在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...

  2. python中的JSON到底怎么用?

    前言 最近在学习python爬虫,在对数据进行持久化存储的时候,会选择使用json格式的数据进行存储,由此就引发了一个问题,python中的JSON库到底咋用? 以前使用JavaScript中Json ...

  3. 详解Python中的JSON以及在Python中使用JSON

    首先什么是JSON? JSON(JavaScript Object Notation, JS 对象简谱,即JavaScript对象表示法) 是一种用于表示结构化数据的流行数据格式.      在服务器 ...

  4. python中字典和json的区别_详解python中的json和字典dict

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

  5. Python 中的json模块dumps参数详解

    1.什么是JSON 维基百科中的定义: JSON(JavaScript Object Notation,JavaScript对象表示法)是一种由道格拉斯·克罗克福特构想和设计.轻量级的资料交换语言,该 ...

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

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

  7. 在Python中,json.jumps无法直接转译datetime类型的值

    python中,json.jumps无法直接转译datetime类型的值. 最简便的方法可以通过下面这个: json.dumps(results, indent=4, sort_keys=True, ...

  8. python json loads_如何区别python中的json模块loads和load方法

    在python中的json模块,有一对方法load()和loads(),其中load()方法是从json文件读取json,而loads()方法是直接读取json,两者都是将字符串json转换字典对象. ...

  9. Python中的JSON简介

    您知道如何从在线API传输数据或将不同类型的数据存储到本地计算机吗?无论以何种方式,您都会沉浸在JSON中,JSON代表[Java Script Object Notation].它是一种著名的流行数 ...

  10. python中的json注意事项

    案例一.正常输出情况 import json jsonData = '{"a":1,"b":2,"c":1.2,"d": ...

最新文章

  1. linux上验证cudnn是否安装成功_非root用户安装cuda与cudnn
  2. 小心使用innerHTML
  3. 认证考试介绍之RHCE篇
  4. 关键字typedef、关键字using、auto类型说明符和declytpe类型指示符
  5. LeetCode 66. Plus One
  6. 所有权链(Ownership Chain)
  7. 我的dota之路(下)
  8. 电路布线(动态规划C++实现)
  9. (一)区块链的共识算法:整体介绍 及 分叉 的通俗讲解
  10. FIR 带通滤波器设计
  11. 第二章 基本放大电路
  12. [生存志] 第3节 序 汉字的韵脚和格律(下)
  13. 机器学习之手写字体(digits)识别——利用sklearn实现
  14. transform改变图片大小以及位置
  15. IDEA try catch快捷键、 快速生成get set 方法快捷键、快速生成有参和无参构造方法快捷键
  16. 植物大战僵尸无尽版游泳池优秀阵容推荐(一)
  17. 微信登录界面安卓代码_「微信多开神器」一键安排你的所有微信
  18. configure: error: cannot run /bin/bash config/config.sub 解决configure配置问题
  19. java 1 2 等于_java 判断语句中一个等于号和两个等于号的区别是什么?
  20. idea jdk版本设置

热门文章

  1. npm install 本地安装与全局安装
  2. 转电感和磁珠两兄弟的差别
  3. CRM中多张关联表join的报表
  4. m1系统怎么重装,m1芯片怎么重装系统,苹果M1芯片重装系统,m1芯片重新安装mac
  5. ​ ​微软Office新增实用功能允许用户在不同设备上轻松送同步字体
  6. 视频分割修整功哪一款视频剪辑软件更好用?
  7. code principles
  8. Linux 最常用 的150 个命令汇总
  9. Python零基础入门学习 作者:小甲鱼
  10. 【Android】Intent传递对象(序列化)