Ho un file in cui ho scaricato un numero enorme di liste. Adesso voglio caricare questo file in memoria e utilizzare i dati al suo interno. Ho provato a caricare il mio file usando il metodo "load" di "pickle", tuttavia, per qualche motivo, mi dà solo il primo elemento nel file. in realtà ho notato che carica solo la mia prima lista in memoria e se voglio caricare tutto il mio file (un certo numero di liste) allora devo scorrere il mio file e usare "pickle.load (nomefile)" in ognuna delle iterazioni che prendo. Il problema è che non so come effettivamente implementarlo con un ciclo (per o mentre), perché non so quando raggiungo la fine del mio file. un esempio mi aiuterebbe molto. grazieLettura da un file usando pickle e per loop in python
10
A
risposta
9
ne dite di questo:
lists = []
infile = open('yourfilename.pickle', 'r')
while 1:
try:
lists.append(pickle.load(infile))
except (EOFError, UnpicklingError):
break
infile.close()
Si dovrebbe __never__ uso 'eccezione:'; specifica sempre l'eccezione che stai cercando di catturare (ad esempio "ad eccezione di PicklingError:"). Inoltre, l'idioma Python per loop infiniti è 'while 1', anche se è nitpicky =). – katrielalex
@katrielalex - hai ragione, l'ho risolto. @Hossein - Ora ho testato gli errori possibili, quindi per favore se solleva qualsiasi altro errore di EOFError e UnpicklingError, aggiungilo alla lista. – eumiro
Modern Python dovrebbe usare 'while True' per cicli infiniti. 'while 1' è stato utilizzato nel codice Python che precede PEP 285, che ha aggiunto' True' alla lingua. –