Forum
>>
Principianti
>>
importare lista da file
Pagina: 1
Esegui il login per scrivere una risposta.
Pagina: 1
Scritto da pasto360 |
2016-03-29 17:35:40 - importare lista da file
|
Ciao a tutti,
mi presento al forum già con un bel quesito da principiantissimo. Premetto che ho iniziato a studiare da pochissimo questo programma da autodidatta. Vorrei realizzare un programmino che banalmente mi crei una lista, la salvi su un file esterno e che all'avvio successivo la possa reimportare per poter essere modificata. nessun problema per creare la lista a=[raw_input("voce da aggiungere")] lista=lista + a nessun problema con l'esportazione della lista out_file = open("test.txt","w") out_file.write(str(lista)) out_file.close() nessun problema con l'importazione della lista in_file = open("test.txt","r") lista = in_file.readline() in_file.close() il problema avviene quando alla lista importata cerco di aggiungere una nuova voce TypeError: cannot concatenate 'str' and 'list' objects mi manca, a quanto ne capisco, una trasformazione inversa, quella che devo fare nel momento dell'esportazione con str. Esatto? |
|
Scritto da Orsogrizzly |
2016-03-29 19:30:04 - Re: importare lista da file
|
Sicuro che con questo stai facendo quello che dici? oppure stai facendo quello che credi!!
lista=lista + asembra più una concatenazione e probabilmente da questo l'errore che viene emesso lista.append(a)questo somiglia molto di più ad una aggiunta alla lista esistente poi una volta modificata la lista devi salvare il file con le modifiche- |
|
Scritto da pasto360 |
2016-03-30 08:23:10 - Re: importare lista da file
|
Ciao!, hai ragione, non so se fa quello che credo o quello che dico ma sia con .append che con la concatenazione la lista funzione e vengono aggiunte le voci. Le voci non vengono più aggiunte nel momento in cui importo la lista (in entrambi i casi append/concatenazione)
se sostituisco lista=lista + a con lista.append(a) ottengo il seguente errore quando dopo averla importata gli faccio aggiungere una voce Traceback (most recent call last): File "C:\Python27\elenco.py", line 19, in <module> lista.append(a) AttributeError: 'str' object has no attribute 'append' |
|
Scritto da Orsogrizzly |
2016-03-30 09:28:03 - Re: importare lista da file
|
Scusami, ma il mio intento non era quello di darti la soluzione diretta al quesitoposto
ma farti ragionare sull'errore che ti veniva esposto per poter ragionare su che cosa stai sbagliando, nel primo caso: TypeError: cannot concatenate 'str' and 'list' objectsnel secondo: AttributeError: 'str' object has no attribute 'append'nel primo caso ti sta dicendo che non puoi concatenare una stringa con una lista nel secondo ti stà dicendo che la stringa non ha un attributo/metodo append ciò dovrebbe farti pensare o capire che non stai lavorando con un a lista ma con una stringa.... da qui un po di ragionamento su quello che vuoi fare e quello che credi di fare .... pensaci un pochino e vedrai che riesci nell'intento se proprio non riesci posta ancora e vediamo di spiegare meglio. |
|
Scritto da pasto360 |
2016-03-31 00:15:19 - Re: importare lista da file
|
hai perfettamente ragione! ci devo arrivare io altrimenti non imparo più!!!!
ma credo di essere entrato in un circolo di pensiero da cui non esco. comprendo che un oggetto non pùò concatenarsi con una stringa e viceversa ma mi obbliga a trasformare la mia lista in stringa per poterla scrivere sul file... A questo punto ho un file esterno con una stringa da dover trasformare in lista... non solo, devo risolvere il fatto che valore=raw_input("cosa devo aggiungere alla lista?") a.append(valore) cerco di aggiungere alla lista una stringa e questo non è consentito. sostanzialmente tutte le stringhe devo trasformarle in liste ed a fine programma la lista in stringa.... giusto? |
|
Scritto da Orsogrizzly |
2016-03-31 16:01:16 - Re: importare lista da file
|
Si può dire che ora stai percorrendo la strada giusta,
Voglio solo farti ragionare un altro pochino, Che tipo di file stai utilizzando? è un file di testo quindi gli "oggetti" che puoi scrivere sul file sono per forza di cose "oggetti" stringa. Ovviamente una stringa è una sequenza di caratteri che si può suddividere, gli "oggetti" ottenuti dalla suddivisione sono ancora degli "oggetti" stringa ma ora si possono far appartenere a una lista ..... o potrebbero essere diventati una lista ..... a in questo caso è la lista valore è la stringa ce vai ad aggiungere alla lista append è un metodo delle liste Ripeto stai utilizzando un file di testo quindi..... se vuoi salvare oggetti per come sono, prova a dare un occhiata al modulo shelve se non erro il nome. Ho riletto con un po più attenzione il codice che hai postato sul primo post: lista = in_file.readline() cosi scritto lista corrisponderà alla sola ultima lista = in_file.readlines()la lista comprenderà tutte le righe del file, piccolo suggerimento che forse ti potrebbe aiutare a ragionare, aggiungi questo nel codice: print type(lista)in questa posizione: in_file = open("ricette.txt","r")
lista = in_file.readline()
print type(lista)#<--------------------
in_file.close()
print lista
--- Ultima modifica di Orsogrizzly in data 2016-03-31 16:30:04 --- --- Ultima modifica di Orsogrizzly in data 2016-03-31 16:31:00 --- --- Ultima modifica di Orsogrizzly in data 2016-03-31 16:31:34 --- |
Pagina: 1
Esegui il login per scrivere una risposta.