Forum
>>
Programmazione Python
>>
Files e Directory
>>
Errore Pickle in lettura
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da trescon |
2020-06-02 22:59:27 - Errore Pickle in lettura
|
Buonasera, allora io ho un file che creo io con pickle dove salvo alcune liste (alcune composte di numeri, alcune composte da testo); il problema di presenta quando con pickle.load vado a leggere il file, e incontro la riga di dati "stringa" salvata.
Premetto che nel salvare i dati non mi da nessun errore, allego il codice (dalla riga etichette ci sono dei campi stringa) pickle.dump(tempo_periodo,f) pickle.dump(tempi_dissolvenze,f) pickle.dump(tempi_scheda_rs485_1_evento_1,f) pickle.dump(tempi_scheda_rs485_1_evento_2,f) pickle.dump(tempi_scheda_rs485_2_evento_1,f) pickle.dump(tempi_scheda_rs485_2_evento_2,f) pickle.dump(etichette_dissolvenze,f) pickle.dump(etichette_rs485_1,f) pickle.dump(etichette_rs485_2,f) pickle.dump(etichette_gpio,f)ecco il record prima che non da errore in lettura e subito dopo il record stringa che da l'errore tempi_scheda_rs485_2_evento_2 = [70,80,90,100,110,120,130,140,150,160,170,180,190,200,210,220] etichette_dissolvenze = ["Libero 1" , "Libero 2"] per leggere il file utilizzo: a=pickle.load(f) b=pickle.load(f) c=pickle.load(f) d=pickle.load(f) e=pickle.load(f) f=pickle.load(f) g=pickle.load(f) ** questa da l'errore , in corrispondenza del primo record stringa h=pickle.load(f) i=pickle.load(f) l=pickle.load(f)Ed ecco l'errore che mi da : File "/Separati/spedizione_1.py", line 128, in Leggi g=pickle.load(f) TypeError: file must have 'read' and 'readline' attributes Non ho capito cosa trovi che non gli piaccia, sono sempre delle liste .... giusto ? Utilizzo piattaforma Linux su Raspberry e Python 3.7 Grazie a chi potra' aiutarmi ------
Alberto |
|
Scritto da RicPol |
2020-06-03 14:25:44 - Re: Errore Pickle in lettura
|
uhm, ma ancora prima del tuo errore, sei sicuro di poter fare quello che stai facendo?
Se ho ben capito tu stai serializzando diversi oggetti in successione *in un unico file*... ma questo non funziona in pickle (se ricordo... non ho tempo adesso di controllare). Puoi serializzare solo UN oggetto in un file. Poi naturalmente nessuno ti vieta di mettere 100 oggetti diversi in una lista, e serializzare quella lista. Però non puoi "sbattere" alla rinfusa in un file 100 oggetti separati. Per prima cosa controllerei questo, leggendomi *bene* la documentazione di pickle. Poi vedi che il tuo errore va via da solo, secondo me. https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
|
Scritto da trescon |
2020-06-03 22:09:44 - Re: Errore Pickle in lettura
|
Grazie mille per la risposta Ricpol; potrebbe essere come dici..... lo strano è che l’errore me lo da quando leggo le serializzando i e non quando le scrivo.
Mah, farò delle prove e vedrò se trovo info di aapofondimento. Grazie ancora ------
Alberto |
|
Scritto da RicPol |
2020-06-03 23:02:33 - Re: Errore Pickle in lettura
|
Mah, non mi soffermerei più di tanto sulla natura di quell'errore... a questo punto può dipendere da troppe cose.
Fai semplicemente qualcosa come my_list = [obj1, obj2, obj3, ...] # raccolgo tutti gli oggetti in una lista with open('dump', 'w') as f: pickle.dump(f) # ... with open('dump', 'r') as f: my_list = pickle.load(f) obj1 = my_list0 obj2 = my_list1 etc --- Ultima modifica di RicPol in data 2020-06-03 23:06:15 --- https://pythoninwindows.blogspot.com/p/i-miei-libri.html : i miei libri
https://pythoninwindows.blogspot.com : il mio blog |
Pagina: 1
Esegui il login per scrivere una risposta.