So schließen Sie die Datei nach pickle.load () in Python

8

Ich habe auf diese Weise ein Python-Wörterbuch gespeichert (eigentlich mit "importiere cPickle as pickle"):

  
    

pickle.dump (dictname, öffnen ("dateiname.pkl", "wb"))

  

Und ich lade es in einem anderen Skript auf diese Weise:

  
    

dictname = pickle.load (Öffnen ("dateiname.pkl", "rb"))

  

Wie ist es möglich, die Datei danach zu schließen?

    
user2961420 20.11.2013, 16:11
quelle

2 Antworten

23

Es ist besser, stattdessen eine with -Anweisung zu verwenden, die geschlossen wird die Datei, wenn die Anweisung endet, auch wenn eine Ausnahme auftritt:

%Vor%

Andernfalls wird die Datei nur geschlossen, wenn der Garbage Collector ausgeführt wird, und wenn dies geschieht, ist sie unbestimmt und fast unmöglich vorherzusagen.

    
Adam Rosenfield 20.11.2013, 16:13
quelle
5

Das Verwenden der with -Anweisung ist der bessere Ansatz, aber um entgegengesetzt zu sein, wenn Sie with nicht verwendet haben, sollten Sie eine Datei behandeln ... und von dort schließen.

%Vor%

und im anderen Skript:

%Vor%

Dies ist im Wesentlichen, was with für Sie tut.

Aber ... wenn Sie (aus welchem ​​Grund auch immer) stecken geblieben sind, mit dem Code, den Sie ursprünglich gepostet haben, und um Ihre ursprüngliche Frage zu beantworten ... ja, der Müllsammler wird es für Sie zu einem unbestimmten Zeitpunkt in der Zukunft schließen. Oder Sie könnten einen Verweis auf das Dateiobjekt mit dem gc -Modul aufspüren und dann schließen. Es gibt ein paar Codes, die Ihnen dabei helfen können, zum Beispiel: Ссылка

with und f.close() sind jedoch viel mehr bevorzugt, und Sie sollten es vermeiden, durch das gc Modul zu suchen, es sei denn, Sie befinden sich wirklich in einem Pickle.

    
Mike McKerns 11.06.2014 21:05
quelle

Tags und Links