码迷,mamicode.com
首页 > 编程语言 > 详细

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

时间:2018-11-26 00:10:45      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:机器   .com   字符串   ati   key   type   alt   print   消费   

  由于上一篇篇幅较大,留下的这一点内容就想在这里说一下,顺便有个小练习给大家一起玩玩,首先来学习json 和 pickle。

  之前我们学习过用eval内置方法可以将一个字符串转成python对象,不过,eval方法是有局限性的,对于普通的数据类型,json.loads和eval都能用,但遇到特殊类型的时候,eval就不管用了,所以eval的重点还是通常用来执行一个字符串表达式,并返回表达式的值。

什么是序列化?

我们把对象(变量)从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling,在其他语言中也被称之为serialization,marshalling,flattening等等,都是一个意思。

序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling。

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:

技术分享图片

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换(比如函数、类之类的)
# -*- coding:utf-8 -*-
# -----------------------json序列化----------------
import json
dict1 = {"name": "liu", "age": 18, "sex": "man"}

j_dict = json.dumps(dict1)   # 转成str格式
f = open("json_dumps_text", "w")
f.write(j_dict)     # 等价于json.dump(dict1, f),dump就是帮你转成str然后帮你写入
f.close()

# -----------------------json反序列化----------------
import json
f = open("json_dumps_text", "r")
res = json.loads(f.read())      # 等价于json.load(f),loads就是将读出来的str转化成原本的格式,而load就是将文件句柄内的全部读出来然后转换格式
print(res)
# -*- coding:utf-8 -*-
# -----------------------pickle序列化----------------
import pickle

dict1 = {"name": "liu", "age": 18, "sex": "man"}
p_dict = pickle.dumps(dict1)
print(type(p_dict))     # <class ‘bytes‘>,这里是将str转换成bytes类型
print(p_dict)

f = open("pickle_text", "wb")   # 注意是w是写入str,wb是写入bytess‘
f.write(p_dict)     # 等价于pickle.dump(dict1, f)
f.close()

# -----------------------pickle反序列化----------------
import pickle
f = open("pickle_text", "rb")
data = pickle.loads(f.read())   # 等价于data=pickle.load(f)
print(data[name])

   shelve模块是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

#  shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型
import shelve

f = shelve.open("shelve_text")
# f[‘info‘] = {"name": "liu", "age": 18, "sex": "man"}      # 将info这个key还有value写入文件
# f.close()

print(f[info])    # 从文件内取key为info的值
print(f.get(info)[name])    # 从文件内取key为info下name的值

 小练习:

模拟实现一个ATM + 购物商城程序

1、信用卡额度 15000或自定义
2、实现购物商城,买东西加入 购物车,调用信用卡接口结账
3、信用卡可以提现,手续费5%
4、支持多账户登录
5、支持账户间转账
6、记录每月日常消费流水
7、提供还款接口
8、ATM记录操作日志 
9、提供管理接口,包括添加账户、用户额度,冻结账户等。。。
10、用户认证用装饰器

 

Python全栈开发记录_第八篇(模块收尾工作 json & pickle & shelve & xml)

标签:机器   .com   字符串   ati   key   type   alt   print   消费   

原文地址:https://www.cnblogs.com/leixiaobai/p/10017544.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!