Domanda Risolto Stampare una lista su un txt

Stato
Discussione chiusa ad ulteriori risposte.

Psychonaut

Utente Jade
17 Giugno 2012
1,492
89
744
747
Voglio stampare degli oggetti str in un txt, questi vengono assegnati ad una variabile 'nome', che prende le varie str tramite input.
Python:
def ricorda(nome, l=[]):
        if not nome in l:
            l.append(nome)
            print(l)
            return l
        elif nome in l:
                print('nome già presente')
        f=open('test.txt','w')
        f.writelines(l)
        f.close

while True:
        print('Prova programma')
        f = input('1 prova, 2 prova2, exit')
        if f == '1':
                ricorda(nome = input('inserire nome'))
        if f == 2:
                pass

        elif f == '3':
                print('programma terminato')
                break

Il problema è che il file test.txt viene creato, ma vuoto, mi viene da pensare che la variabile che contiene la lista in f.writelines(l) non sia la stessa in cui vengono salvati effettivamente gli oggetti str
 
Voglio stampare degli oggetti str in un txt, questi vengono assegnati ad una variabile 'nome', che prende le varie str tramite input.
Python:
def ricorda(nome, l=[]):
        if not nome in l:
            l.append(nome)
            print(l)
            return l
        elif nome in l:
                print('nome già presente')
        f=open('test.txt','w')
        f.writelines(l)
        f.close

while True:
        print('Prova programma')
        f = input('1 prova, 2 prova2, exit')
        if f == '1':
                ricorda(nome = input('inserire nome'))
        if f == 2:
                pass

        elif f == '3':
                print('programma terminato')
                break

Il problema è che il file test.txt viene creato, ma vuoto, mi viene da pensare che la variabile che contiene la lista in f.writelines(l) non sia la stessa in cui vengono salvati effettivamente gli oggetti str
Ciao, il problema è nell’open, poiché usando ‘w’ ogni volta il file txt viene inizializzato. Prova ad utilizzare ‘a+’
 
  • Mi piace
Reazioni: Psychonaut
ok ora gira, ma ho due domande, nel caso il file non esista 'a' lo crea come fa l'opzione w?
'a' starebbe per append, quindi le stringhe inserite prima della riaperture del file restano immutate, aggiungendo di fatto quelle nuove, giusto?
+ permette di leggere e scrivere il file giusto?
è possibile usare l'opzione wa+?
grazie mille in anticipo :)
 
nel caso il file non esista 'a' lo crea come fa l'opzione w?
Sì, nel caso il file non esistesse ne viene creato uno nuovo con posizionamento a fondo file
'a' starebbe per append, quindi le stringhe inserite prima della riaperture del file restano immutate, aggiungendo di fatto quelle nuove, giusto?
Esatto, sostanzialmente tutto quello che inserisci viene posto alla fine del file aperto, quello che il file già contenenva non viene invece toccato (a meno che non si stia lavorando in modalità a+)
è possibile usare l'opzione wa+?
No, puoi solo usare w+ o a+ . Entrambi creano un file se questi non esiste ed entrambi ne aprono un già esistente, solo che a+ si posiziona a fondo file (permettendo comunque di operare sul contenuto pre-esistente del file aperto) mentre w+ si posiziona e inizio file, permettendo anche lui di operare sul contenuto pre-esistente del file
 
  • Mi piace
Reazioni: Psychonaut
Stato
Discussione chiusa ad ulteriori risposte.