Seite 1 von 1

Datei öffnen + gleich anzeigen

Verfasst: Montag 30. Januar 2006, 12:26
von blubbaz

Code: Alles auswählen

import time

richtig = 5
aufgabe = 7

infile = file('statistik.txt','rt')
daten = infile.read()
infile.close()

time = time.localtime()
zeit = []
zeit.append(time[2])
zeit.append(time[1])
zeit.append(time[0])

outfile = file('statistik.txt', 'wt')
daten2 = str(daten) + str(zeit) + '  %d von %d Aufgaben richtig.\n'%(richtig, aufgabe)
outfile.write(daten2)
outfile.close()
Hab ein kleines Problem.
Mein Programm soll eine .txt öffnen und sie gleich anzeigen lassen.
Ich programmiere mit wx ein Gui und wenn ich dort auf einen Button klicke soll die Statistik gleich als .txt angezeigt werden. Also ohne in den Filemanager zu gehen und sie da per Hand zu öffnen.

Ich hoffe, meine Frage ist einigermaßen verständlich gestellt ;)

Danke.

Verfasst: Montag 30. Januar 2006, 16:23
von Mawilo
Schau dir mal os.system() an. Damit kannst du Dateien öffnen und anzeigen lassen.

Verfasst: Montag 30. Januar 2006, 20:10
von Mad-Marty
klingt für ein fall von

sys.execle("notepad.exe", "meine_txt")


oder so ähnlich ... nicht ?

Und neiin, die frage ist für mich nicht eindeutig :?: :shock:

Verfasst: Dienstag 31. Januar 2006, 07:16
von querdenker
Ich würde mal ein

Code: Alles auswählen

myfile=fh("pfad/zur/datai.txt","r")
nehmen.
Oder den Pfad vorher in einer cfg oder ini speichern.
Und dann beim Init der wx.Stc den Text laden.

mfg, querdenker

Verfasst: Dienstag 31. Januar 2006, 18:03
von CM
@Stephan: Wie soll das gehen?

Ansonsten: Warum nicht den Button mit einer best. Funktion verknüpfen, die sofort eine Datei einliest und in einer wx.TextCtrl darstellt (unter der Voraussetzung, daß die Datei immer denselben Namen hat, sonst mußt Du eben flexibler schreiben)? Das geht sehr schnell. Du hast zwei Möglichekeiten: Die Datei ganz einlesen und dann darstellen, was u. U. etwas zu langsam ist, wenn die Datei ein paar MB umfasst. Oder Häppchenweise einlesen, in den Puffer für Deine TextCtrl schubsen und wieder ein Häppchen einlesen. Das dauert zwar wesentlich länger, aber das muß der Nutzer des Programms ja gar nicht merken, weil er ja noch damit beschäftigt sein wird die ersten Zeilen der Datei zu lesen (oder Du programmierst einen eigenen Thread, der beim Einlesen einer extrem großen Datei die Arbeit macht, aber das klingt nach einem Overkill für das Problem).

Static Text würde ich nicht nehmen (persönliche Vorliebe), weil ich es eher etwas ungeeignet für variable Inhalte finde. Aber das kannst Du Dir ja in den Demos für wxPython einfach mal näher anschauen.

Gruß,
Christian

Verfasst: Dienstag 31. Januar 2006, 18:34
von Mawilo
Ich habe die Frage so gedeutet, dass die .txt-Datei mit dem "normalen" Programm für diese Dateitypen (z.B. notepad) geöffnet werden soll. Dafür eignet sich z.B. os.system('datei.txt') oder os.startfile('datei.txt').

Verfasst: Dienstag 31. Januar 2006, 19:10
von CM
Ach so, und ich dachte Du wolltest mit os.system irgendwie in wxPython rumfrickeln. (Aber wenn Du mit os.system irgendeine Datei an ein Programm übergeben willst, mußt Du schon 1. das Program öffnen und 2. die entsprechende Datei übergeben. Also z.B. os.system('meinprogramm < meinedatei.dat'), wobei das '<' natürlich programm- und OS-abhängig ist. Deine Version wird nicht funktionieren, wenn 'datei.txt' nicht ausführbar ist.)

Christian

Verfasst: Mittwoch 1. Februar 2006, 07:54
von jens
Wobei man IMHO unter Windows einfach die Datei selber "starten" kann, dann öffnet sich die Datei mit dem Programm, welches mit der Endung verknüpft ist...
Information über die Verknüpfungen kann man einfach aus der REG auslesen. :)

Verfasst: Freitag 3. Februar 2006, 11:40
von blubbaz
Stephan hat geschrieben:Ich habe die Frage so gedeutet, dass die .txt-Datei mit dem "normalen" Programm für diese Dateitypen (z.B. notepad) geöffnet werden soll. Dafür eignet sich z.B. os.system('datei.txt') oder os.startfile('datei.txt').
Ja, so war die Frage gemeint.
Mad-Marty hat geschrieben:klingt für ein fall von

sys.execle("notepad.exe", "meine_txt")


oder so ähnlich ... nicht ?

Und neiin, die frage ist für mich nicht eindeutig :?: :shock:

Danke. Klingt logisch. Werd ich bei Gelegenheit mal ausprobieren. ;)