Abgleich von zwei Wörterbüchern

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Hallo!
Ich mach jetzt eine Anwendung zum Hinzufügen neuer Vokabeln für mein Vokabeltrainer. Da habe ich den Code:

Code: Alles auswählen

#!/usr/bin/env python

import cPickle as p

new_vocabulary = {
    "dare": "geben"
}

with open('list.pickle', 'r+') as f:
    saved_vocabulary = p.load(f)
    new_vocabulary.update(saved_vocabulary)
    # update zerstört das vorherige Wörterbuch
    p.dump(new_vocabulary, f)

print new_vocabulary
dictionary.update() macht mir ja die vorherigen Einträge weg, aber die hätte ich gerne weiterhin. Ich erinnere mich, dass ich sowas schon mal irgendwo gesehen habe, aber ich weiß nicht wo und wie es genau war :(

Ich möchte ein neues Wörterbuch mit den »alten« Vokabeln und mit den neuen. Wie funktioniert das?
BlackJack

@nomnom: Überleg mal wo der Dateizeiger steht nachdem Du den Dateiinhalt ausgelesen hast und wo dann der Schreibzugriff seine Daten hinschreiben wird.

Dateien zum lesen *und* schreiben zu öffnen ist in den meisten fällen umständlicher als die Datei für die jeweilige Operation erneut zu öffnen und zu schliessen.

Zum lesen *und* schreiben würde ich Dateien nur öffnen wenn ich die Binärstruktur der Datei kenne und gezielt einzelne kleine Teile einer grösseren Datei ändern möchte.

Edit: Und Pickle-Dateien sind Binärdaten und müssen auch in dem Modus geöffnet werden. Sonst erzeugt man Dateien die nicht zuverlässig über Betriebssystemgrenzen hinweg funktionieren.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Wenn du mittels pickle ein dict speichern willst, solltest du dir mal das Modul shelve anschauen.
nomnom
User
Beiträge: 487
Registriert: Mittwoch 19. Mai 2010, 16:25

Danke, BlackJack. Daran hatte ich nicht gedacht (das war jetzt bestimmt nicht überraschend ;))
BlackJack hat geschrieben:Edit: Und Pickle-Dateien sind Binärdaten und müssen auch in dem Modus geöffnet werden. Sonst erzeugt man Dateien die nicht zuverlässig über Betriebssystemgrenzen hinweg funktionieren.
Sag das dem bösen Swaroop, Autor von A Byte of Python :twisted:
derdon hat geschrieben:Wenn du mittels pickle ein dict speichern willst, solltest du dir mal das Modul shelve anschauen.
Okay, werde ich mir anschauen (nachdem alles funktioniert).
Antworten