Seite 1 von 1

Variable in Dateiname...

Verfasst: Donnerstag 27. April 2006, 15:35
von Vos
Hi leute,
ich hab volgenes problem,
Also, wenn der anwender in meinem Program ein neues Docoment erstellen möchte, wollte ich eine abfrage stellen wie die datei heißen soll.
ob xyz.txt
oder doch lieber zxy.txt
oder vieleicht zyx.py

Code: Alles auswählen

groesse = eSchritt1.get()
programm = file(r"blabla.txt", "a+")
also so funktioniert es... (er erstellt eine die datei blabla.txt)
jetzt möchte ich natürlich mit der Variable arbeiten. Ich habs schon probiert aber es will nicht
einige versuch von vielen:

Code: Alles auswählen

programm = file(r groesse, "a+")

Code: Alles auswählen

programm = file(r "%s", "a+" % (groesse) )
und wenn das dan klappt wie kann ich dan den datentype festlegen?
also

Code: Alles auswählen

programm = file(r + ".txt", "a+")
ich freu mich auf viele gute antworten

Grüße und danke schonmal[/code]

Verfasst: Donnerstag 27. April 2006, 15:56
von murph
Was hälst du von join?
An jeden Datentyp wird vor dem Öffnen '.txt' angehängt,
Bei den Fehlermeldungen kann dann ja einfach über einige 'ifs'
eine korrekte eingegeben werden (damit der user nicht irritiert wird)

Verfasst: Donnerstag 27. April 2006, 16:02
von Vos
Sorry kannst du mir das ein wenig genau erklären? Mit nem kleinen Beispiel vieleicht! Wäre cooel!

Danke schonmal
grüße

Re: Variable in Dateiname...

Verfasst: Donnerstag 27. April 2006, 19:23
von Leonidas
Also du willst einfach einen Dateinamen mit einer Endung verketten?
Vos hat geschrieben:

Code: Alles auswählen

programm = file(r "%s", "a+" % (groesse) )
Ja, schon fast:

Code: Alles auswählen

programm = file("dateiname-%s.txt" % groesse, "a+")

Verfasst: Donnerstag 27. April 2006, 21:13
von murph
Das wird er notgedrungen tun müssen.
Ich denke, dass man sagt, dass '.txt' angehängt wird, und falls die Endung '.txt' mitgeschrieben wurde, dann nicht. Falls es die Datei ohne '.txt' aber mit einer anderen Endung gibt, dann je nach Laune abbrechen oder eine Warnmeldung ausgeben, aber trotzdem den Text ausgeben.
lil bit offtopic: Ich habe einmal Extra einen Pythoneditor geschrieben, weil ich auch Dateien mit Fehlerhaften Zeichen öffnen wollte (zb. windowsdateien, die einen Umlaut im Dateinnamen hatten etc.)

Re: Variable in Dateiname...

Verfasst: Donnerstag 27. April 2006, 21:40
von Michael Schneider
Vos hat geschrieben:

Code: Alles auswählen

groesse = eSchritt1.get()
programm = file(r"blabla.txt", "a+")
Hi Vos,

erstmal: das 'r' vor einem String gibt an, dass er als raw-String gewertet werden soll, d.h. dass die Zeichen so aufgenommen werden sollen, wie sie angegeben sind und beispielsweise "\n" als "\n" gewertet wird, nicht als Zeilenumbruch. Das funktioniert mit Variablen nicht (wäre ja sonst ein Teil des Variablennamens).
Vos hat geschrieben: einige versuch von vielen:

Code: Alles auswählen

programm = file(r groesse, "a+")

Code: Alles auswählen

programm = file(r "%s", "a+" % (groesse) )
Variablen muss man immer genau hinter dem String angeben, der die Platzhalter enthält. String und Variablen bilden quasi eine Einheit, als würdest Du eine Klammer darumsetzen.

Versuch mal eine der folgenden Möglichkeiten:

Code: Alles auswählen

programm = file(eSchritt1.get() + ".txt", "a+")
oder

Code: Alles auswählen

programm = file("%s.txt" % eSchritt1.get(), "a+")
Join bringt Dir nur etwas, wenn Du einen Pfad mit einem anderen Pfad oder Dateinamen verbinden willst, da es den Betriebssystemseparator berücksichtigt.

Code: Alles auswählen

import os
os.path.join(".", "pfad", "datei.txt")
... ergibt unter Windows ".\pfad\datei.txt" und unter UNIX "./pfad/datei.txt"

Grüße,
der Michel

Verfasst: Freitag 28. April 2006, 13:18
von Vos
Danke euch allen.
Besonders Michael für seine eklärung.
Habe mich aber für Leonidas lösung entschieden.

Grüße

Verfasst: Dienstag 1. August 2006, 15:50
von Michael Schneider
Hi murph,

bitte entschuldige, ich habe erst jetzt gemerkt, dass Du die String-Methode join meintest, um die Zeichenketten zusammenzuhängen. Bin eben ein Spätzünder. :idea:

der Michel