Ich lerne, wie Gurke zu verwenden ist. Ich habe ein namedtuple-Objekt erstellt, es an eine Liste angehängt und versucht, diese Liste zu markieren. Allerdings bekomme ich folgende Fehlermeldung:Wie man eine namedtuple Instanz richtig pickelfrei macht
pickle.PicklingError: Can't pickle <class '__main__.P'>: it's not found as __main__.P
Ich fand, dass, wenn ich den Code lief ohne es in einer Funktion Einwickeln, es funktioniert perfekt. Ist ein zusätzlicher Schritt erforderlich, um ein Objekt zu stechen, wenn es in eine Funktion eingeschlossen wird?
Hier ist mein Code:
from collections import namedtuple
import pickle
def pickle_test():
P = namedtuple("P", "one two three four")
my_list = []
abe = P("abraham", "lincoln", "vampire", "hunter")
my_list.append(abe)
f = open('abe.pickle', 'w')
pickle.dump(abe, f)
f.close()
pickle_test()
Leider scheint Gurke mit Nametuples nicht gut zu funktionieren. – Antimony
@Antimony: 'Pickle' behandelt benannteTuple-Klassen ganz gut; Klassen in einem lokalen Namespace Funktion nicht so sehr definiert. –
mögliche Duplikate von [Python: Kann Typ X nicht picken, Attributsuche fehlgeschlagen] (http://stackoverflow.com/questions/4677012/python-cant-pickle-type-x-attribute-lookup-failed) – Air