Seite 1 von 1

Textausgabe in eine Datei

Verfasst: Donnerstag 13. August 2009, 16:27
von jkl
Hallo,

folgendes Problem: Ich möchte einen Text in eine Datei ausgeben. Folgenden Code habe ich (so ähnlich in verschiedenen Versionen) versucht (Auszug):

Code: Alles auswählen

        
print time.strftime("%d.%m.%Y  %H:%M",time.gmtime()), ": ",self.Freitext.toPlainText()
        t = Bemerkung()
        t.text = time.strftime("%d.%m.%Y  %H:%M",time.gmtime()), ": ",self.Freitext.toPlainText()
        fobj = open("ausgabe.txt", "w")
        print >> fobj,  t.text
        fobj.close()
        self.close()
Dabei ist die Ausgabe auf der Kommandozeile die folgende:
13.08.2009 15:22 : Das ist ein Test

In der Textdatei wird aber das folgende ausgegeben:
('13.08.2009 15:22', ': ', PyQt4.QtCore.QString(u'Das ist ein Test'))

Obere Zeile ist gewünscht, aber untere wird gespeichert.

Wie schaffe ich das denn, dass die obere Zeile in die Textdatei gespeichert wird?

Danke

Jens

Verfasst: Donnerstag 13. August 2009, 17:01
von lunar
In Zeile vier wird ein Tupel erstellt und an "t.text" gebunden. Das Verhalten der "print"-Anweisung, an Kommata einfach Leerzeichen in die Ausgabe einzusetzen, ist ein Spezialfall, so wie die gesamte "print"-Syntax. Dieses Verhalten lässt sich nicht auf jede Python-Anweisung verallgemeinern.

Du musst in Zeile vier manuell eine Zeichenkette zusammensetzen.

Verfasst: Donnerstag 13. August 2009, 17:01
von EyDu
Hallo,

du darfst Eben kein Tupel erzeugen ;-)

Code: Alles auswählen

t.text = time.strftime("%d.%m.%Y  %H:%M",time.gmtime()) + ": " + self.Freitext.toPlainText()
Dateiobjekte haben übrigens eine write-Methode, dann kannst du das etwas unschöne print-Statement weglassen.

Du solltest außerdem noch einen Blick auf PEP 8 werfen. Variablennamen werden in Kleinbuchstaben geschrieben und Funktionsnamen in der Form "to_plain_text".

Und ganz wichtig: Wähle aussagekräftige Namen. "text" und "fobj" sagen genau nichts aus.

Verfasst: Donnerstag 13. August 2009, 17:40
von jkl
Hallo,

vielen Dank für die Hilfen. Ich bin absoluter Neuling und aus diesem Grund klau ich mir noch Code von anderen zusammen. Und aus diesem Grund kommen dann so nichtssagende Namen...

Ich werde mich bemühen, das noch zu ändern.

Bezüglich eurer Antworten vielen Dank. Vielleicht könnt ihr mir kurz ein Beispiel zeigen, wie ich als Python-Profi so eine Zeichenkette manuell zusammensetze. Bin ich jetzt unverschämt :oops:

Vielen Dank auf jeden Fall...

Jens

Verfasst: Donnerstag 13. August 2009, 17:52
von cofi
Das zeigte EyDu schon. Im Tutorial gibt es auch viele Beispiele.

Verfasst: Donnerstag 13. August 2009, 18:22
von jkl
Danke,
werde mich bemühen, die für euch klar erkennbaren Beispiele zu finden.

Jens