簡體   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