Seite 1 von 1

Abgleich von zwei Wörterbüchern

Verfasst: Donnerstag 4. November 2010, 18:07
von nomnom
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?

Re: Abgleich von zwei Wörterbüchern

Verfasst: Donnerstag 4. November 2010, 18:34
von 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.

Re: Abgleich von zwei Wörterbüchern

Verfasst: Donnerstag 4. November 2010, 18:38
von derdon
Wenn du mittels pickle ein dict speichern willst, solltest du dir mal das Modul shelve anschauen.

Re: Abgleich von zwei Wörterbüchern

Verfasst: Donnerstag 4. November 2010, 18:55
von nomnom
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).