学习内容:
1.对象持续化
2.python简单的存储方式
Tips:
1.对象持续化我们可以变通的把他理解为,我们将所需资源存入内存,在必要的时候可以调取它
2.常见存储方式
1)文本文件
2)pickle使用
3)shelve使用
4)数据库
5)ORM
由于还在学习基础内容,本次只针对前三个简单易行的方法

重点:
1.文本文件存储
1)在之前的课程已经学过,简单回顾一下
存文件1:with open(“wxj.txt”,“w”,encoding=“utf8”) as f

f.write(“123”)
 f.close()
 读文件2:
 f=open(“wxj.txt”)t=f.read()
 print(t)


2)但是文本默认存入的是字符串格式
我们在读取列表等信息时很不方便,这时候引入eval的方法(eval将传输的内容转化为python表达式)
在同一文件,我们使用定义函数的方法实现功能

scores = [67, 78, 89, 90]
def write_inf():
 with open(“123.txt”, “w”, encoding=“utf8”) as f
 f.write(scores)print(“写入完成”)
 if name == “main”:
 write_inf()


直接写入scores会报错,我们加上str(scores)
导入就不会报错了

def read_inf():
 with open(“12.txt”, “r”, encoding=“utf8”) as f:
 st1 = eval(f.read())
 print(st1[0])
 st1[0]=12
 print(st1)
 print(st1[0])if name == “main”:
 write_inf()
 read_inf()
 这样就完成读出,同时还可以修改列表的内容
 完整代码如下:def write_inf():
 with open(“12.txt”, “w”, encoding=“utf8”) as f:
 f.write(str(scores))
 f.close()
 print(“写入完成”)def read_inf():
 with open(“12.txt”, “r”, encoding=“utf8”) as f:
 st1 = eval(f.read())
 print(st1[0])
 st1[0]=12
 print(st1)
 print(st1[0])if name == “main”:
 write_inf()
 read_inf()

运行结果如下:

python保存文本最佳 python中的保存_python


2.pickle操作

1)picke是个包,使用先导入

import pickleperson = {“name”: “tom”, “age”: 20}
 s = pickle.dumps(person)
 p = pickle.loads(s)
 print§

运行结果如下:

python保存文本最佳 python中的保存_python_02

注意:上出使用的是pickle.dumps()和pickle.loads()的操作
2)将内容写入二进制文件,pickle.dump()和pickle.load()的操作

import pickle
person = {“name”: “tom”, “age”: 20}
 s = pickle.dump(person, open(“wxj_123.txt”, “wb”))
 p = pickle.load(open(“wxj_123.txt”, “rb”))
 print§

结果如下:

python保存文本最佳 python中的保存_文本文件_03

3.shelve操作,可以在类里面进行操作,可以给对象加上键值

import shelve
class Person:
 def init(self, name, age):
 self.name = name
 self.age = age
def __repr__(self):
    return "此人的名字为:{0}".format(self.name)
def write_inf():
 s = Person(“TOM”, 20)
 db = shelve.open(“Person_inf”)
 db[“s”] = s#加上关键字
 db.close()
 print(“写入完成”)def read_inf():
 s = shelve.open(“Person_inf”)
 st = s[“s”]
 print(st)#读取关键字的内容
 print(st.name)
 print(st.age)
 s.close()if name == “main”:
 write_inf()

python保存文本最佳 python中的保存_python_04


写入后会出现多个文件

我们调取read_inf()函数

结果如下

python保存文本最佳 python中的保存_python保存文本最佳_05

我们read_inf函数内更改调用后的st的内容,发现可以更改内容,shelve操作不改变输入的类型

python保存文本最佳 python中的保存_python_06