json格式在数据的传输之间起了一个很大的作用,而且也是一个通用的数据格式,觉得很有用,下面是在书上的摘抄,很基础,很好理解,适合刚学习json的小白。
摘取:《python编程从入门到实践》——【美】Eric Matthes著
模块json可以将简单的python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据,还可以使用json在python程序之间分享数据,更重要的是,json数据格式并不是python专用的,可以与其他编程语言的人分享。
1、一个存储一组数据的简短程序:json.dump()
json.dump()接受两个参数:要存储的数据以及存储数据的文件对象
# -*- encoding: utf-8 -*-
import json
numbers=[2,3,5,7,11,13]
filename='number.json'
with open(filename,'w') as f_obj:
json.dump(numbers,f_obj)
这个程序没有输出,到那时可以打开文件number.json看看其内容。
2、下面是编写刚刚存储的列表读取到内存中:json.load()
# -*- encoding: utf-8 -*-
import json
filename='number.json'
with open(filename) as f_obj:
numbers=json.load(f_obj)
print(numbers)
这是一种在程序之间共享数据的简单方式。
保存和读取用户生成的数据
下面是一个简单的例子:用户首次运行程序时被提示输入自己的名字,这样再次运行程序时就记住他了。
1、先来存储用户的名字:
# -*- encoding: utf-8 -*-
#存储json格式文件
import json
username=input("what you name?")
filename="username.json"
with open (filename,'w') as f_obj:
json.dump(username,f_obj)
print("we'll remember your name when you come back," + username + "!")
2、再编写一个向其名字被存储的用户发出问候:
# -*- encoding: utf-8 -*-
#读取json格式文件的内容
import json
filename='username.json'
with open(filename) as f_obj:
username=json.load(f_obj)
print("welcom back," + username + "!")
下面将上面两个程序合并到一个程序中,这个程序运行时,将尝试从文件username.json中获取用户名,因此我们首先编写一个尝试恢复用户名的try代码块,如果这个文件不存在,我们就在except代码块中提示输入用户名,并将其存储在username.json中,以便程序再次运行时可以获取它。
下面是代码:remember_me.py
# -*- encoding: utf-8 -*-
import json
#如果以前存储了用户名,就加载它
#否则就提示用户名并存储它
filename="username.json"
try:
with open (filename) as f_obj:
username=json.load(f_obj)
except:
username=input("what your name?")
with open(filename,'w') as f_obj:
json.dump(username,f_obj)
print("we'll remember your name when you come back," + username + "!")
else:
print("welcom back," + username + "!")
上面是两个比较简单基础的代码,可以认识到 json的作用和基础用法。
重构刚刚的代码块,用几个函数执行单一而清晰的任务
# -*- encoding: utf-8 -*-
import json
def get_username():
"""如果存储了用户名,就获取它"""
filename = "username.json"
try:
with open(filename) as f_obj:
username = json.load(f_obj)
except:
return None
else:
return username
def get_new_username():
"""提示用户输入用户名"""
username = input("what you name?")
filename = "username.json"
with open(filename, 'w') as f_obj:
json.dump(username, f_obj)
return username
def greet_user():
"""问候用户,并指出其名字"""
username=get_username()
if username:
print("welcom back," + username + "!")
else:
username=get_new_username()
print("we'll remember your name when you come back," + username + "!")
greet_user()
网友评论