python 6: pickle模块
在内存中操作,用dumps()和loads
对文件操作,dump()和load(不通过文件的write()和read())
如果通过文件的write()和read(),则用dumps()和loads。这时用内存作了中介。
1 在内存中的操作,用dumps()和loads(),它们各有一个参数
>>>li=[1,2,3]
>>>r=pickle.dumps(li)
>>>print(r)
b'\x80\x03]q\x00(K\x01K\x02K\x03e.'
>>>s=pickle.loads(r)
>>>print(s)
[1,2,3]
2 写入文件,用dump(),它有两个参数,后一个是文件
>>>li=[1,2,3]
>>>pickle.dump(li,open('db','wb'))
或者:
>>>li=[1,2,3]
>>>f=open('db','wb')
>>>pickle.dump(li,f)
3 从文件读出,用load(),它有一个参数:文件
>>>r=pickle.load(open('db','rb'))
>>>print(r)
[1,2,3]
或者
>>>f=open('db','rb')
>>>r=pickle.load(f)
>>>print(r)
[1,2,3]
4 写入文件的另一种方法,使用文件的write方法,就使用dumps()
说明:是先通过pickle.dumps()写到内存,再用f.write()写到文件
>>>li=[1,2,3]
>>>open('db','wb').write(pickle.dumps(li))
或者
>>>li=[1,2,3]
>>>f=open('db','wb')
>>>f.write(pickle.dumps(li))
5 从文件读出的另一种方法,使用文件的read()方法,就使用loads()
说明:是先通过f.reads()从文件读入内存(这时是二进制),再用pickle.loads()送到变量(变为指定类型)。
>>>r = pickle.loads(open('db','rb').read())
>>>print(r)
[1,2,3]
或者
>>>f=open('db','rb')
>>>r=pickle.loads(f.read())
>>>print(r)
[1,2,3]