Bezeichnung einer Variable

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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

RedSharky hat geschrieben:Danke, ich glaub, ich habs hinbekommen:
Irgendwie verstehe ich deine read Methode nicht so ganz. Warum sollte man erst das dict übergeben, welches dann aus der ini kommen soll??? Geht es dir darum, das man nur die Werte im dict zurück bekommt, die man vorher angibt?
Auch verstehe ich den Test nicht so genau. Man möchte doch erstmal Daten speichern und dann später wieder einlesen.

Ich würde es so machen:

Code: Alles auswählen

import sys
from ConfigParser import SafeConfigParser

SECTION = "variables"

def write_ini(config):
    ini = SafeConfigParser()
    ini.add_section(SECTION)

    for key,value in config.iteritems():
        ini.set(SECTION, key, value)

    new_ini = file('example.ini','w')
    ini.write(new_ini)


def read_ini():
    ini = SafeConfigParser()
    ini.read('example.ini')

    config = dict(ini.items(SECTION))

    return config


if __name__ == '__main__':
    # schreiben
    config = {'a':"1000",'b':"FooBar"}
    write_ini(config)

    # lesen
    config = read_ini()
    print config
Es gibt sowieso Probleme, wenn du Zahlen "speichern" willst. Denn die kommen als String wieder aus der ini zurück. Der SafeConfigParser wirft auch einen Traceback schon beim speichern.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
RedSharky
User
Beiträge: 99
Registriert: Donnerstag 13. April 2006, 15:38

jens hat geschrieben:Irgendwie verstehe ich deine read Methode nicht so ganz. Warum sollte man erst das dict übergeben, welches dann aus der ini kommen soll??? Geht es dir darum, das man nur die Werte im dict zurück bekommt, die man vorher angibt?
Zum Teil, aber im Normalfall ist das wohl nicht nötig.
jens hat geschrieben:Auch verstehe ich den Test nicht so genau. Man möchte doch erstmal Daten speichern und dann später wieder einlesen.
Das ist kein Test, sondern ein Beispiel, das man zu einem sinnvollen Programm erweitern kann. Normalerweise liest man erst die Settings ein, damit man mit seinen eigenen Einstellungen arbeiten kann. Und damit sie beim Beenden nicht verloren gehen, werden sie am Ende gespeichert.

Danke für deinen Code. Insbesondere:
jens hat geschrieben:config = dict(ini.items(SECTION))
Das werde ich einarbeiten.
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Du sollstest das niemals verwenden, aber so ginge es z.B.:

Code: Alles auswählen

foo = "bar"
bar = [foo, "bar"]

d = dict((repr(v), k) for k, v in locals().iteritems() if not k.startswith('_'))
print d
print d[repr(foo)] == 'foo'
:D
Benutzeravatar
mkesper
User
Beiträge: 919
Registriert: Montag 20. November 2006, 15:48
Wohnort: formerly known as mkallas
Kontaktdaten:

Aua...

Code: Alles auswählen

>>> import Tkinter as Tk
>>> foo = "bar"
>>> bar = [foo, "bar"]
>>> d = dict((repr(v), k) for k, v in locals().iteritems() if not k.startswith('
_'))
>>> print d
{"'bar'": 'foo', "<module 'Tkinter' from 'C:\\Python25\\lib\\lib-tk\\Tkinter.pyc
'>": 'Tk', "['bar', 'bar']": 'bar', '{"<module \'Tkinter\' from \'C:\\\\Python25
\\\\lib\\\\lib-tk\\\\Tkinter.pyc\'>": \'Tk\'}': 'd'}
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Naja, es tut exakt, was es soll :D
Antworten