Seite 1 von 1

Casting mit Dictionaries

Verfasst: Montag 15. November 2004, 20:07
von mitsuhiko
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?

Verfasst: Montag 15. November 2004, 21:08
von rayo
Mit

Code: Alles auswählen

dictionary = eval(strdict)
gruss

Verfasst: Dienstag 16. November 2004, 04:58
von mitsuhiko
Ich könnt mich schlagen. Das ich da nicht selber draufkomm :x
Danke :wink:

Verfasst: Dienstag 16. November 2004, 09:20
von jens
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()...?

Verfasst: Dienstag 16. November 2004, 09:40
von mitsuhiko
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.