Utilizzare l'istruzione with
è l'approccio migliore, ma solo per essere contrario, se non si utilizza with
, è necessario mantenere un handle di file ... e chiudere da lì.
f = open('filename.pkl', 'wb')
pickle.dump(dictname, f)
f.close()
e nell'altra script:
f = open('filename.pkl','rb')
dictname = pickle.load(f)
f.close()
Questo è essenzialmente ciò che with
sta facendo per voi.
Tuttavia ... se si è bloccato (per qualsiasi motivo), con il codice originariamente inviato e per rispondere alla domanda originale ... sì, il garbage collector lo chiuderà per voi in un momento non specificato in futuro. Oppure è possibile rintracciare un riferimento all'oggetto file utilizzando il modulo gc
, quindi chiuderlo. Ci sono alcuni codici di là fuori che potrebbero aiutare a fare questo, per esempio: https://github.com/uqfoundation/dill/blob/master/dill/pointers.py
Tuttavia, with
e f.close()
sono molto molto più preferita, e si dovrebbe evitare di tracciare attraverso il modulo gc
se non si è veramente in una salamoia.
fonte
2014-06-11 21:05:35