从文件中读取数据:json 存储数据-python进阶篇十三

  用户关闭程序时,你几乎总是要保存他们提供的信息;一种简单的方式是使用模块json 来存储数据。模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。

  1、使用json.dump()json.load()

  函数json.dump() 接受两个实参:要存储的数据以及可用于存储数据的文件对象,使用json.load() 将这个列表读取到内存。

 

import json

#  使用json.dump()把数据存储到文件
numbers = [2, 3, 5, 7, 11, 13]
filename = numbers.json
with open(filename, w) as f_obj:
    json.dump(numbers, f_obj)

#  使用json.load() 将这个列表读取到内存中
with open(filename) as f_obj:
    numbers = json.load(f_obj)
print(numbers)

#  [2, 3, 5, 7, 11, 13]

 

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

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

import json

# 如果以前存储了用户名,就加载它
# 否则,就提示用户输入用户名并存储它
filename = username.json
try:
    with open(filename) as f_obj:
        username = json.load(f_obj)
except FileNotFoundError: 
    #  如果文件不存在,那么
    username = input("What is your name? ")
    with open(filename, w) as f_obj:
        json.dump(username, f_obj)
    print("We‘ll remember you when you come back, " + username + "!")
else:
    #  如果文件存在,那么
    print("Welcome back, " + username + "!")

  3、使用自定义函数来完成上面

import json


def greet_user():
    """问候用户,并指出其名字"""
    filename = username.json
    try:
        with open(filename) as f_obj:
            username = json.load(f_obj)
    except FileNotFoundError:
        username = input("What is your name? ")
        with open(filename, w) as f_obj:
            json.dump(username, f_obj)
        print("We‘ll remember you when you come back, " + username + "!")
    else:
        print("Welcome back, " + username + "!")


greet_user()

  4、对上面的函数进一步重构,重构让代码更清晰、更易于理解、更容易扩展。

import json


def get_stored_username():
    """如果存储了用户名,就获取它"""
    filename = username.json
    try:
        with open(filename) 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? ")
    filename = username.json
    with open(filename, 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 remember you when you come back, " + username + "!")


greet_user()

 

从文件中读取数据:json 存储数据-python进阶篇十三

上一篇:旋转数组的最小数字


下一篇:添加Java环境变量~即查即用~