2017-03-06 102 views
0

我正在学习其他程序员编写的程序。所以我想查看酸洗物品的结构。 因为我需要知道腌制数据的结构,我试图加载使用Spyder在IPython的泡菜......例如: -如何在Ipython控制台中加载/查看pickle对象的结构? (Windows 7,Spyder,Ipython控制台)

import pickle 

data1 = {'a': [1, 2.0, 3, 4+6j], 
     'b': ('string', u'Unicode string'), 
     'c': None} 

selfref_list = [1, 2, 3] 
#selfref_list.append(selfref_list) 

output = open('data.pkl', 'wb') 

# Pickle dictionary using protocol 0. 
pickle.dump(data1, output) 

# Pickle the list using the highest protocol available. 
pickle.dump(selfref_list, output, -1) 

output.close() 

我想知道这里腌制.pkl文件的结构。

回答

1

目前尚不清楚你的意思是structure。如果我运行你的代码,我可以这样做:

In [6]: with open('data.pkl','rb') as f: 
    ...:  x = pickle.load(f) 
    ...:  y = pickle.load(f) 
    ...:  
    ...:  
In [7]: x 
Out[7]: {'a': [1, 2.0, 3, (4+6j)], 'b': ('string', 'Unicode string'), 'c': None} 
In [8]: y 
Out[8]: [1, 2, 3] 

我可以用相同数量的读取恢复连续写入。如果我试图得到更多,我得到一个EOFError: Ran out of input

你想知道什么?文件上有什么对象?每个对象的结构? Python对象和文件上的字节之间的转换?

+0

谢谢你的答案。实际上,我想在控制台中检索pickled数据。 我想知道如果我能知道什么腌制的对象包含的数据的类型,无负载 对于如: 类型(x)是字典 型(Y):名单 – Abhishek

+0

因为 我们可以给2次加载泡菜当我们知道只有2件物品被腌制时 x = pickle.load(f) y = pickle.load(f) 但是当我们不知道有多少物品时......那么如何处理这些问题。 – Abhishek

1

怎么办时,我们不知道有多少项目腌做...

找到了答案:

unpickled_store = [] 
file_id = open('data.pkl','rb') 
while True: 
     try: 
      unpickled_item = pickle.load(file_id) 
      unpickled_store.append(unpickled_item) 
     except EOFError: 
      break 
相关问题