Forum >> Programmazione Python >> Files e Directory >> Errore Pickle in lettura

Pagina: 1

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
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.




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
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 ---


Pagina: 1



Esegui il login per scrivere una risposta.