Casting mit Dictionaries

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
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Montag 15. November 2004, 20:07

Hallo.
Ich kann ja Dictionaries mit

Code: Alles auswählen

str(dictionary)
umwandeln.
Aber leider nur in eine Richtung. Wie kann ich das möglichst einfach wieder zurückwandeln?
TUFKAB – the user formerly known as blackbird
rayo
User
Beiträge: 773
Registriert: Mittwoch 5. November 2003, 18:06
Wohnort: Schweiz
Kontaktdaten:

Montag 15. November 2004, 21:08

Mit

Code: Alles auswählen

dictionary = eval(strdict)
gruss
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 16. November 2004, 04:58

Ich könnt mich schlagen. Das ich da nicht selber draufkomm :x
Danke :wink:
TUFKAB – the user formerly known as blackbird
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Dienstag 16. November 2004, 09:20

Ich weiß ja nicht wofür es gebraucht wird... Aber ist eval() nicht generel böse :)
Ich meine, z.B. für CGI... Dann könnte man den String, der zu einem Dict "kovertiert" werden soll, evtl. manipulieren und schon sind böse Python Befehle eingeschleust...
Sollte man somit besser zu Fuss den String in ein Dict parsen? Also jede menge .split()...?
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 16. November 2004, 09:40

Eval ist generell nicht böse.
Und ich rufe es ja so auf:

Code: Alles auswählen

    # ------------------------------------------------------------------------ #
    # Session Funktionen
    def SessionStart(self):
        if not self._COOKIE.has_key(self.__SESSION_ID):
            sid = md5(str(time.time())+str(random.random()))
            self.SetCookie(self.__SESSION_ID, sid, self.__SESSION_COOKIE_LIFETIME)
        else:
            sid = self._COOKIE[self.__SESSION_ID]
        try:
            session = file(self.__SESSION_NAME.replace("%SID%", sid)).read()
        except:
            session = "{}"
        self._SESSION = eval(session)
        self.__SESSION_OPEN = 1
        self._sessionid = sid
    def SessionSave(self):
        sid = self._sessionid
        if (self.__SESSION_OPEN):
            try:
                file(self.__SESSION_NAME.replace("%SID%", sid), "w").write(str(self._SESSION))
                self.__SESSION_OPEN = 0
                return 1
            except:
                return 0 
Entnommen von hier
Da kann kein Benutzer irgendeinen Code hinzufügen. Aber so kann ich ganz bequem Sessions speichern.
TUFKAB – the user formerly known as blackbird
Antworten