3

いくつかのデータ構造を含むピクルスファイルがあります。要素の正確な量と種類はわかりません。すべてのオブジェクトを辞書またはリストに入れる方法は?
問題は、エントリ数がわからないままファイルを反復処理する方法です。
すべてのオブジェクトは文字列として保存されますか?
編集:私はそのようなコードを使用してデータをファイルに保存しています:

import pickle

def _save(_file, *_obj):
    with open(_file, 'w') as f:
        for obj in _obj:
            pickle.dump(obj, f)

私が今見ている唯一の解決策は、オブジェクトの数を最初のエントリとして保存することです。それを読んでから、他のすべてを読んでください。

その方法でデータを簡単に unpickle できます。

list_data = [1, 2, 3, 4]
dict_data = {1:'a', 2:'b'}
tuple_data = (1, 2, 3)

_save('my_pickle.pckl', list_data, dict_data, tuple_data)
with open('my_pickle.pckl', 'r') as f:
    item1 = pickle.load(f)
    print item1
    item2 = pickle.load(f)
    print item2
    item3 = pickle.load(f)
    print item3

これは私が望むものを与えてくれます...しかし、ループでそれを行う必要があります

4

1 に答える 1

4

すべてのオブジェクトをリストに追加してから、好きなことを行うことができます。

with open(pickle_file) as f:
    unpickled = []
    while True:
        try:
            unpickled.append(pickle.load(f))
        except EOFError:
            break
于 2013-04-04T11:30:13.387 に答える