Seite 1 von 1

Ausgabdateien in einer Schleife erzeugen

Verfasst: Mittwoch 5. August 2009, 13:11
von Tyrax
Hallo Gemeinde,

ich erzeuge fuer die Ausgabedaten einer Simulation eine Datei und schreibe dann meine Daten hinein:

Code: Alles auswählen

f = file('Ausgabe.txt',  'w')
f.write('meine Daten')

Nun will ich innerhalb einer Schleife Daten fuer verschiedene Parameterwerte meiner Simulation erzeugen und in jedem Durchlauf gleich eine Datei erzeugen die die aktuellen Parameterwerte im Namen traegt, zB Ausgabe_i1_k7.txt. Ich habe sowas aehnliches schon mal gefragt und habe gelernt wie ich eine print-Ausgabe in meinem Sinne veraendern kann, dasIch lehrte mich:

Code: Alles auswählen

"Ist das Element {0} enthalten (0/1)".format(1)
Das format-Attribut gibt es soweit ich feststellen konnte nicht fuer die file-Methode. Wie muss ich also vorgehen?

Danke und Gruesse, Tyrax

Verfasst: Mittwoch 5. August 2009, 13:23
von EyDu

Code: Alles auswählen

filename = "datei_mit_der_nummer_{0}.txt".format(42)
fp = open(filename, "w")
...
Du solltest Dateien übrigens besser mit "open" öffnen und nicht mit "file".

Das "format" ist übrigens keine Methode von "print" sondern von Strings.

Verfasst: Mittwoch 5. August 2009, 13:24
von cofi
Ich verstehe nicht so ganz, was du machen willst.
Willst du den Dateinamen parameterisieren? Oder die Zeile, die du schreibst?
Beides sind Strings und haben deshalb die Methode (oder auch die printf-Syntax).

Aber zum Snippet: Du solltest nicht ``file`` direkt nutzen, sondern ``open`` und du solltest ``with`` nutzen:

Code: Alles auswählen

with open(fname, 'w') as out_file:
    out_file.write(data)

Verfasst: Mittwoch 5. August 2009, 13:38
von Tyrax
Hallo cofi und EyDu,

zwei schnelle und gute Antworten! Damit kann ich umgehen,

besten Dank, Tyrax

@cofi: Ich will die Dateinamen parametrisieren.

Verfasst: Mittwoch 5. August 2009, 14:34
von Tyrax
Hallo EyDu,

ich bekomme es leider noch nicht ganz auf die Reihe. Wenn ich Deinen Code benutze, bekomme ich wie zuvor die Fehlermeldung:

"The debugged program raised the exception unhandled AttributeError
"'str' object has no attribute 'format'"

Sorry, aber ich verstehe im Moment nicht, was das Problem ist. (Meine Python-Version ist 2.51)

Gruesse, Tyrax

Verfasst: Mittwoch 5. August 2009, 14:41
von cofi
Das Problem ist, dass es die ``format`` Methode erst ab 2.6 gibt, d.h. du musst auf die alten Formatstrings zurueckgreifen: http://docs.python.org/library/stdtypes ... formatting

Verfasst: Mittwoch 5. August 2009, 14:42
von EyDu
Ganz einfach: die format-Methode gibt es erst ab 2.6. Suche einfach mal nach in der Doku nach "String Formatting". Das hier löst erstmal dein Problem:

Code: Alles auswählen

filename = "datei_mit_der_nummer_%d.txt" % 42
Edit:
cofi hat geschrieben:Edit: Timing ist alles ... :roll:
^^

Verfasst: Mittwoch 5. August 2009, 14:43
von Tyrax
Ah, ich hab's geahnt. Dummerweise sitze ich an einem Buero-Rechner und kann nicht selber auf 2.6x updaten. Danke jedenfalls fuer den Link.

Gruesse, Tyrax

@EyDu: Oh, cool. Danke.

Verfasst: Mittwoch 5. August 2009, 14:48
von cofi
EyDu hat geschrieben:Edit:
cofi hat geschrieben:Edit: Timing ist alles ... :roll:
^^
Hmm der suesse Geschmack von Rache :twisted: