Python编程:从入门到实践第十章读书笔记10.4存储数据

第十章读书笔记10.4存储数据

#coding:gbk 

#用户关闭程序时,你几乎总是要保存他们提供的信息;一种简单的方式是使用模块json来存储数据
#模块json让你能够将简单的Python数据结构转储到文件中,并在程序再次运行时加载该文件中的数据。你还可以使用json在Python程序之间分享数据。
#更重要的是,JSON数据格式并非Python专用的,这让你能够将以JSON格式存储的数据与其他编程语言的人分享。

#注意:JSON(JavaScript Object Notation)格式最初是为JavaScript开发的,但随后成了一种常见格式,被包括Python在内的众多语言采用。

#10.4.1使用json.dump()和json.load()

#number_writer.py

import json

numbers = [2,3,5,7,11,13]

filename = 'numbers.json'
with open(filename,'r+') as f_obj:
	json.dump(numbers,f_obj)

#number_reader.py
import json

filename = 'numbers.json'
with open(filename) as f_obj:
	numbers = json.load(f_obj)
	
print(numbers)


#10.4.2保存和读取用户生成的数据

#remember_me.py
import json

username = input("What is your name? ")

filename = 'username.json'

with open(filename,'w') as f_obj:
	json.dump(username,f_obj)
	print("We'll remember you when you come back, " + username + "!")
	
#greeter_user.py

import json

filename = 'username.json'

with open(filename) as f_obj:
	username = json.load(f_obj)
	print("Welcome back, " + username + "!")
	
#合并以上两个程序
#remember_me.py
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.title() + "!")
else:
	print("Welcome back, " + username.title() + "!")

#10.4.3重构

#remember_me.py
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 will remember you when you come back, " + username.title() + "!")
	else:
		print("Welcome back, " + username.title() + "!")
		
greet_user()


#重构函数greeter_user()

import json

def get_stored_username():
	"""如果存储了用户名,就打印它"""
	filename = 'username.json'
	try:
		with open(filename) as f_obj:
			json.load(f_obj)
	except FileNotFoundError:
		return None
	else:
		return username
		
def greet_user():
	"""问候用户,并指出其名字"""
	username = get_stored_username()
	if username:
		print("Welcome back, " + username.title() +"!")
	else:
		username = input("What is your name?")
		filename = 'username.json'
		with open(filename,'w') as f_obj:
			json.dump(username,f_obj)
			print("We will remember you when you come back, " + username.title() + "!")
		
greet_user()
		 
#进一步重构,将没有存储用户名时提示用户输入的代码放在一个独立的函数中
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' will remember you when you come back, " + username.title() + "!")

greet_user()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值