zoukankan      html  css  js  c++  java
  • python中的JSON(1)

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

    例如:

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

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

    如何保存——

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

        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

  • 相关阅读:
    项目总结1--技术
    基于MFC的Opengl实现动画
    vs2010 MFC Opengl实现
    设计模式-状态模式
    设计模式-访问者模式
    设计模式-责任链模式
    设计模式-中介者模式
    设计模式-命令模式
    设计模式-备忘录模式
    设计模式-观察者模式
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/6854562.html
Copyright © 2011-2022 走看看