繁体   English   中英

从泡菜文件中,恢复python中的数据

[英]from a pickle file, restoring data in python

我在使用Python从字典中还原姿势时遇到一些问题。 我刚刚创建了一个包含对象数据的字典,并将该字典保存在一个pickle文件中。

现在,我想从该pickle文件中获取所有数据,并将其还原到另一个对象。 你能告诉我最好的方法是什么?

这是我的save_pose函数:

def save_pose () :

     output = open('pose_dictionary.pkl', 'wb')
     pickle.dump(grab_pose(cmds.ls(selection=1), True), output)
     output.close()

     dict_file = open('pose_dictionary.pkl', 'rb')           
     dict_pkld = pickle.load(dict_file)
     dict_file.close()


     print dict_pkld

我只是将字典保存在一个pickle文件中,所以当打印dict_pkld时,它返回

{u'left_pCube1_control': {u'translateX': {'value': 0.0, 'key': False}, u'translateY': {'value': 0.0, 'key': False}, u'translateZ': {'value': 0.0, 'key': False}, u'scaleX': {'value': 4.1730065104412066, 'key': {'outTangent': u'auto', 'inTangent': u'auto', 'inAngle': 0.0, 'outAngle': 0.0}}, u'scaleY': {'value': 4.1730065104412066, 'key': {'outTangent': u'auto', 'inTangent': u'auto', 'inAngle': 0.0, 'outAngle': 0.0}}, u'visibility': {'value': True, 'key': False}, u'rotateX': {'value': 0.0, 'key': False}, u'rotateY': {'value': 0.0, 'key': False}, u'rotateZ': {'value': 0.0, 'key': False}, u'scaleZ': {'value': 4.1730065104412066, 'key': {'outTangent': u'auto', 'inTangent': u'auto', 'inAngle': 0.0, 'outAngle': 0.0}}}

我现在想将这些数据从该文件还原到一个对象。

我在从Python的字典中还原姿势时遇到一些问题

到底是什么问题...如果我不得不猜测,我想说的是您的grab_pose函数有问题。

当我运行以下脚本时,我没有任何错误。

import pickle

output = open('pose_dictionary.pkl', 'wb')
pickle.dump({"test":1}, output)
output.close()

dict_file = open('pose_dictionary.pkl', 'rb')           
dict_pkld = pickle.load(dict_file)
dict_file.close()

print dict_pkld

pickle.load上的pickle.load

从打开的文件目标文件中读取一个字符串,并将其解释为泡菜数据流,从而重建并返回原始对象层次结构。

在您的函数中,您都保存和还原了对象。 你应该拆分这些操作(和使用with ):

filename = 'pose_dictionary.pkl'

def save_pose(data):
     with open(filename , 'wb') as output:
         pickle.dump(data, output)

def restore_pose():
     with open(filename , 'rb') as dict_file:
         return pickle.load(dict_file)

data = grab_pose(cmds.ls(selection=1), True) #assumption, based on your code
save_pose(data)
#... 
data = restore_pose()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM