用示例理解Python酸洗

先决条件: Pickle模块

null

Python pickle模块用于序列化和反序列化Python对象结构。Python中的任何对象都可以被pickle,以便保存在磁盘上。pickle所做的是在将对象写入文件之前先“序列化”对象。pickle是一种将python对象(list、dict等)转换为字符流的方法。这个想法是,这个字符流包含在另一个python脚本中重建对象所需的所有信息。

# Python3 program to illustrate store
# efficiently using pickle module
# Module translates an in-memory Python object
# into a serialized byte stream—a string of
# bytes that can be written to any file-like object.
import pickle
def storeData():
# initializing data to be stored in db
Omkar = { 'key' : 'Omkar' , 'name' : 'Omkar Pathak' ,
'age' : 21 , 'pay' : 40000 }
Jagdish = { 'key' : 'Jagdish' , 'name' : 'Jagdish Pathak' ,
'age' : 50 , 'pay' : 50000 }
# database
db = {}
db[ 'Omkar' ] = Omkar
db[ 'Jagdish' ] = Jagdish
# Its important to use binary mode
dbfile = open ( 'examplePickle' , 'ab' )
# source, destination
pickle.dump(db, dbfile)
dbfile.close()
def loadData():
# for reading also binary mode is important
dbfile = open ( 'examplePickle' , 'rb' )
db = pickle.load(dbfile)
for keys in db:
print (keys, '=>' , db[keys])
dbfile.close()
if __name__ = = '__main__' :
storeData()
loadData()


输出:

omkarpathak-Inspiron-3542:~/Documents/Python-Programs$ python P60_PickleModule.py
Omkar => {'age': 21,  'name': 'Omkar Pathak',  'key': 'Omkar',  'pay': 40000}
Jagdish => {'age': 50,  'name': 'Jagdish Pathak',  'key': 'Jagdish',  'pay': 50000}

无锉刀酸洗

# initializing data to be stored in db
Omkar = { 'key' : 'Omkar' , 'name' : 'Omkar Pathak' ,
'age' : 21 , 'pay' : 40000 }
Jagdish = { 'key' : 'Jagdish' , 'name' : 'Jagdish Pathak' ,
'age' : 50 , 'pay' : 50000 }
# database
db = {}
db[ 'Omkar' ] = Omkar
db[ 'Jagdish' ] = Jagdish
# For storing
b = pickle.dumps(db) # type(b) gives <class 'bytes'>
# For loading
myEntry = pickle.loads(b)
print (myEntry)


使用Pickle模块的优点:

  1. 递归对象(包含自身引用的对象): Pickle跟踪它已经序列化的对象,因此以后对同一对象的引用不会再次序列化。(封送模块为此而中断。)
  2. 对象共享(在不同位置对同一对象的引用): 这类似于自参照对象;pickle只存储一次对象,并确保所有其他引用都指向主副本。共享对象保持共享,这对于可变对象非常重要。
  3. 用户定义的类及其实例: Marshal根本不支持这些,但pickle可以透明地保存和恢复类实例。类定义必须是可导入的,并且与存储对象时位于同一个模块中。

本文由 Omkar Pathak .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 贡献极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享