Wie mache ich Regal-Datei leer in python?
Habe ich eine Regal-Datei eingefügt und ein Wörterbuch Daten. Jetzt will ich Aufräumen, das Regal-Datei zur Wiederverwendung als eine saubere Datei.
import shelve
dict = shelve.open("Sample.db")
# insert some data into sample.db
dict = { "foo" : "bar"}
#Now I want to clean entire shelve file to re-insert the data from begining.
- Warum nicht einfach die Datei löschen?
- Beachten Sie, dass
dict = { "foo" : "bar"}
solltedict["foo"] = "bar"
. So wie es jetzt ist, ist es nicht das einfügen von Daten in das Regal-Objekt, sondern Punktedict
um ein neues dictionary-Objekt, während er das Regal unverändert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Regal verhält sich wie ein dictionary, also:
Alternativ können Sie immer entfernen Sie die Datei und lassen Sie Regal eine neue zu erstellen.
shelve
Modul ist erlaubt, um Dinge hinzufügen, um den Dateinamen, den Sie es geben, und auf meine Maschine, die es tatsächlich schafft ein paar Dateien. Clearing-das Wörterbuch scheint einfacher, da es einen Bogen von der Frage, welche Datei oder Dateien zu löschen.dict.clear()
ist das einfachste, und das gültig sein sollte, aber scheint nicht wirklich klar, die Regal-Dateien (Python 3.5.2, Windows 7 64-bit). Zum Beispiel, das Regal.dat
Datei Größe wächst jedes mal, wenn ich führen Sie den folgenden Codeausschnitt, während ich würde erwarten, dass es immer die selbe Größe haben:Update:
dbm.dumb
, dieshelve
verwendet als zugrunde liegende Datenbank unter Windows, enthält das TODO-item in seinem code:Dies erklärt auch die ständig wachsende Regal-Datei-problem.
Also statt
dict.clear()
ich bin mitshelve.open
mitflag='n'
. ZitierenRegal.open()
- Dokumentation:Und
dbm.open()
- Dokumentation fürflag='n'
:Wenn das Regal ist bereits geöffnet, die Verwendung wäre:
keines dieser wirklich funktionieren, Was ich am Ende tun war das erstellen einer Funktion behandeln Sie die Löschung der Datei.
Ich denke, das ist, was Sie suchen.