2015-01-13 4 views
7

Ich habe eine Liste in meinem Programm. Ich habe eine Funktion zum Anhängen an die Liste, leider, wenn Sie das Programm schließen, verschwindet die Sache, die Sie hinzugefügt haben, und die Liste geht zum Anfang zurück. Gibt es irgendeine Möglichkeit, dass ich die Daten speichern kann, damit der Benutzer das Programm wieder öffnen kann und die Liste voll ist.Python Speichern von Daten

Antwort

4

Sie können eine Datenbank erstellen und speichern, die einzige Möglichkeit ist dies. Eine Datenbank mit SQLITE oder einer TXT-Datei. Zum Beispiel:

with open("mylist.txt","w") as f: #in write mode 
    f.write("{}".format(mylist)) 

Ihre Liste geht in die format() Funktion. Es erstellt eine TXT-Datei mit dem Namen mylist und speichert Ihre Listendaten darin.

Danach, wenn Sie Ihre Daten wieder zugreifen möchten, können Sie tun:

with open("mylist.txt") as f: #in read mode, not in write mode, careful 
    rd=f.readlines() 
print (rd) 
4

Der eingebaute in pickle Modul bietet einige grundlegende Funktionen für die Serialisierung, die ein Begriff für das Drehen beliebige Objekte in etwas, das geeignet ist, auf die Platte geschrieben zu werden. Überprüfen Sie die Dokumentation für Python 2 oder Python 3. obwohl

Pickle ist nicht sehr robust, und für komplexere Daten Sie wollen wahrscheinlich in ein Datenbankmodul schauen, wie die eingebaute in sqlite3 oder ein vollwertiges objekt-relationales Mapping (ORM) wie SQLAlchemy .

8

Sie pickle Modul versuchen, die Speicherdaten in Platte zu speichern, ist hier ein Beispiel:

speichern Daten:

import pickle 
dataset = ['hello','test'] 
outputFile = 'test.data' 
fw = open(outputFile, 'wb') 
pickle.dump(dataset, fw) 
fw.close() 

Belastungsdaten:

import pickle 
inputFile = 'test.data' 
fd = open(inputFile, 'rb') 
dataset = pickle.load(fd) 
print dateset 
+1

Für die 'Gurke. dump() 'und' .load() 'Aufrufe zu arbeiten, in Ihren' open() 'Aufrufen müssen Sie möglicherweise die' "wb" 'und' "rb" 'Flags übergeben. [Weitere Informationen in dieser SO-Antwort] (https://stackoverflow.com/a/13906715/4461425). –

+1

Update für offene Flagge hinzufügen –