Variable in Dateiname...

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
Vos
User
Beiträge: 40
Registriert: Freitag 24. März 2006, 13:37

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]
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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)
Vos
User
Beiträge: 40
Registriert: Freitag 24. März 2006, 13:37

Sorry kannst du mir das ein wenig genau erklären? Mit nem kleinen Beispiel vieleicht! Wäre cooel!

Danke schonmal
grüße
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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+")
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
murph
User
Beiträge: 622
Registriert: Freitag 14. April 2006, 19:23
Kontaktdaten:

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.)
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Vos
User
Beiträge: 40
Registriert: Freitag 24. März 2006, 13:37

Danke euch allen.
Besonders Michael für seine eklärung.
Habe mich aber für Leonidas lösung entschieden.

Grüße
Benutzeravatar
Michael Schneider
User
Beiträge: 569
Registriert: Samstag 8. April 2006, 12:31
Wohnort: Brandenburg

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
Diese Nachricht zersört sich in 5 Sekunden selbst ...
Antworten