Einlesen einer Datei in ein Dictionary

Code-Stücke können hier veröffentlicht werden.
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Dienstag 4. Januar 2005, 16:34

Ich habe das eigentlich immer mit eval gemacht:

Code: Alles auswählen

def file2dict(name):
    return eval(file(name, "r").read())
    
def dict2file(name, dct):
    file(name, "w").write(str(dct))
Aber weil man ja eval nicht verwenden soll (Warum eigentlich?) werde ich jetzt auch deine Methoder verwenden.
Allerdings hat das mit eval den Vorteil, dass keine Informationen verlohren gehen. Int bleibt int, list bleibt list.
TUFKAB – the user formerly known as blackbird
genrich
User
Beiträge: 91
Registriert: Sonntag 27. Juni 2004, 17:46

Dienstag 4. Januar 2005, 16:35

Was passiert mit eval(), wenn jemand die Datei manipuliert und ein sys.exit() darin schreibt ;)
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 4. Januar 2005, 17:35

sys.exit() is ja noch ned schlimm, ein "import os; os.system('format c:')" unter windows reingeschmuggelt in die Datei und es kommt freude auf ;)


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Dienstag 4. Januar 2005, 20:33

Hi Blackbird. Siehst ja, was man da schönes mit machen kann :wink: wenn du alternativ beliebige Datenstrukturen von Python abspeichern willst (in einem Dict) dann schau dir doch mal die Module shelve und pickle an, damit geht das genauso bequem aber viel sicherer als mit eval.

@Dookie: eval kann keine Statements ausführen... os muss schon importiert sein, damit es läuft... was es aber nicht annähernd besser macht, da dies oft genug der Fall ist.
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Dienstag 4. Januar 2005, 21:06

Milan hat geschrieben:@Dookie: eval kann keine Statements ausführen... os muss schon importiert sein, damit es läuft... was es aber nicht annähernd besser macht, da dies oft genug der Fall ist.
Da ich eval nie verwende, wusst ich das nicht, aber wie du schon sagst, ist os ja oft genug schon importiert.


Gruß

Dookie
[code]#!/usr/bin/env python
import this[/code]
MKK
User
Beiträge: 10
Registriert: Dienstag 19. April 2005, 11:38
Kontaktdaten:

Mittwoch 20. April 2005, 12:56

Das ist ja wunderbar was man da für tolle Snippets findet! :)

Wahrscheinlich geh ich euch mit meiner Fragerei schön langsam auf die Nerven :roll: Aber ich frage trotzdem....

Das File welches ich in ein Dictionary lesen möchte ist wie folgt formatiert (wieder mal mein CSS):

Code: Alles auswählen

a {
    text-decoration: underline;
    font-size: 10px;
    font-family: Arial;
    font-weight: bold;
    }
table {
    border: 4px ridge #008000;
    padding-left: 8;
    padding-right: 2;
    padding-top: 13;
    padding-bottom: 4;
    background-color: #FFFF00;
    font-family: Arial;
    font-size: 14pt;
    font-weight: bold;
    }
Ich bring die Regular expression nicht so hin, daß ich die Teile zwischen den klammern in das dictionary zum davor stehenden Eintrag bekomme. Das gibts ja nicht :cry:
Antworten