2012-12-11 16 views
6

Sto scrivendo un piccolo programma che ti aiuta a tenere traccia della pagina in cui ti trovi nei tuoi libri. Non sono un fan dei segnalibri, quindi ho pensato "E se potessi creare un programma che prenda l'input dell'utente, e poi mostri il numero o la stringa di testo che hanno scritto, che in questo caso sarebbe il numero di pagina" re e permetti loro di cambiarlo ogni volta che ne hanno bisogno? " Basterebbero solo poche righe di codice, ma il problema è: come posso ottenere di visualizzare lo stesso numero la prossima volta che apro il programma? Le variabili si resetterebbero, vero? C'è un modo per cambiare in modo permanente una variabile in questo modo?Cambia la variabile in modo permanente

+1

sicuro archiviarlo in un file pickle o database ... –

+0

@JoranBeasley Grazie, ma non sono sicuro di come fare uno di quelli. Se potessi illuminarmi, sarebbe fantastico! – MalyG

+0

Oppure scrivere il valore in un file di testo e leggere quel valore dal file di testo quando viene caricato il programma. Date un'occhiata a: http://docs.python.org/2/tutorial/inputoutput.html – adchilds

risposta

5

È possibile memorizzare i valori in un file e caricarli all'avvio.

Il codice sarà un po 'come questo

variable1 = "fi" #start the variable, they can come from the main program instead 
variable2 = 2 

datatowrite = str(variable1) + "\n" + str(variable2) #converts all the variables to string and packs them together broken apart by a new line 

f = file("/file.txt",'w') 
f.write(datatowrite) #Writes the packed variable to the file 
f.close() #Closes the file !IMPORTANT TO DO! 

il codice per leggere i dati potrebbe essere:

import string 

f = file("/file.txt",'r') #Opens the file 
data = f.read() #reads the file into data 
if not len(data) > 4: #Checks if anything is in the file, if not creates the variables (doesn't have to be four) 

    variable1 = "fi" 
    variable2 = 2 
else: 
    data = string.split(data,"\n") #Splits up the data in the file with the new line and removes the new line 
    variable1 = data[0] #the first part of the split 
    variable2 = int(data[1]) #Converts second part of strip to the type needed 

Tenete a mente con questo metodo il file variabile viene memorizzata in chiaro con l'applicazione . Ogni utente potrebbe modificare le variabili e modificare il comportamento dei programmi

+1

Anche se questo non è quello che ho effettivamente usato per risolvere il mio problema, questo è molto utile, e quindi per gli altri per vedere, io lo accetto come risposta – MalyG

1

È necessario memorizzarlo su disco. A meno che non vogliate essere davvero fantasiosi, potete semplicemente usare qualcosa come CSV, JSON o YAML per semplificare i dati strutturati.

Controllare anche il modulo pickle python.

1

variabili hanno diverse vite:

  • Se sono all'interno di un blocco di codice, il loro valore esiste solo per quel blocco di codice. Questo copre funzioni, loop e condizioni.
  • Se sono all'interno di un oggetto, il loro valore esiste solo per la vita di quell'oggetto.
  • Se l'oggetto è dereferenziato o si lascia il codice di blocco in anticipo, il valore della variabile viene perso.

Se si desidera mantenere il valore di qualcosa in particolare, si deve persistono esso. Persistence consente di scrivere una variabile su disco (e sì, i database sono tecnicamente out-to-disk) e di recuperarli in un secondo momento, una volta scaduta la durata della variabile o quando il programma viene riavviato.

Hai diverse opzioni su come vuoi mantenere la posizione della loro pagina: un approccio ambiguo sarebbe usare SQLite; un approccio leggermente meno pesante sarebbe quello di unpickle l'oggetto, o semplicemente scrivere in un file di testo.

Problemi correlati