Seite 1 von 1

Zwei Keys und ein Value in Datei speichern

Verfasst: Dienstag 28. Februar 2017, 21:58
von Zizibee
Hallo zusammen,

ich versuche zur Zeit für mein kleines Stickmusterprogramm die Muster aus dem Code in eine externe Datei zu verbannen.
Als ersten Versuch habe ich einen Buchstaben und die dazugehörige zweidimensionale Liste mit shelve gespeichert. Nun würde ich aber gerne noch verschiedene Schriftarten hinzufügen. Aber dann hätte ich zwei Keys und ein Value, also
Key 1: Schriftart
Key 2: Buchstabe
Value: Liste
Leider habe ich das mit shelve nicht hin bekommen, geht das damit überhaupt?
Weiß jemand, wie oder womit man das umsetzen kann und kann mir einen Tipp geben?

Schon einmal vielen Dank!

Re: Zwei Keys und ein Value in Datei speichern

Verfasst: Mittwoch 1. März 2017, 08:54
von sebastian0202
Für solche Dinge nutze ich immer gerne JSON.
Vielleicht eignet sich für deine Bedürfnisse aber auch eine einfache CSV-Datei?

Code: Alles auswählen

JSON: 
{
    "Stickmuster_1": {
        "Schriftart": "Consolas",
        "Buchstabe": "A",
        "Werte": []
    }
}

CSV:
Consolas;A;1;2;3;4
Arial;B;5;9;
...

Re: Zwei Keys und ein Value in Datei speichern

Verfasst: Mittwoch 1. März 2017, 09:35
von snafu
JSON ist deutlich lesbarer als CSV und auch flexibler. Ohne Not würde ich heutzutage gar nicht mehr zu CSV greifen.

Re: Zwei Keys und ein Value in Datei speichern

Verfasst: Mittwoch 1. März 2017, 11:57
von Zizibee
Geplant und teilweise umgesetzt ist, dass der Benutzer eine Schriftart auswählt und Text eingibt. Dann wird die Texteingabe in einzelne Buchstaben zerlegt und jeder Buchstabe unter Berücksichtigung der Schriftart aus der externen Datei raus gesucht. Aus der Datei kommen zweidimensionale Listen, die zu einer großen zweidimensionalen Liste zusammen gesetzt werden, die wiederum über tkinter angezeigt wird.

Dazu werde ich mich jetzt erstmal mit JSON beschäftigen.
Vielen Dank für die Antworten!

Re: Zwei Keys und ein Value in Datei speichern

Verfasst: Dienstag 7. März 2017, 22:04
von Zizibee
Ich habe da jetzt zu JSON noch eine Frage. Speichern und Laden der Daten klappt zwar, aber ich frage mich, ob man das nicht noch lesbarer hinbekommen kann.
Wenn ich z.B. etwas so speicher

Code: Alles auswählen

    import json
    data = {'Schreibschrift': {'A': [[1, 2], [3, 4]]}}
    with io.open('data.json', 'w', encoding='utf8') as outfile:
        str_ = json.dumps(data)
        outfile.write(str_)
Dann steht in der Datei:

Code: Alles auswählen

{"Schreibschrift": {"A": [[1, 2], [3, 4]]}}
Oder ich änder die Ausgabe in:

Code: Alles auswählen

    str_ = json.dumps(data, indent=4)
Steht in meiner Datei

Code: Alles auswählen

{
    "Schreibschrift": {
        "A": [
            [
                1,
                2
            ],
            [
                3,
                4
            ]
        ]
    }
}
Andere Formatierungen habe ich nicht hinbekommen, hätte aber gerne zwecks besserer Lesbarkeit so etwas wie

Code: Alles auswählen

{
    "Schreibschrift": {"A": [[1, 2],
				                 [3, 4]]}
}
Weiß jemand ob bzw. wie das möglich ist?