Datei öffnen + gleich anzeigen

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
blubbaz
User
Beiträge: 3
Registriert: Sonntag 25. September 2005, 17:46
Wohnort: Bremen

Montag 30. Januar 2006, 12:26

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.
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Montag 30. Januar 2006, 16:23

Schau dir mal os.system() an. Damit kannst du Dateien öffnen und anzeigen lassen.
Mad-Marty
User
Beiträge: 317
Registriert: Mittwoch 18. Januar 2006, 19:46

Montag 30. Januar 2006, 20:10

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:
Zuletzt geändert von Mad-Marty am Dienstag 31. Januar 2006, 08:22, insgesamt 1-mal geändert.
querdenker
User
Beiträge: 424
Registriert: Montag 28. Juli 2003, 16:19
Wohnort: /dev/reality

Dienstag 31. Januar 2006, 07:16

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
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 31. Januar 2006, 18:03

@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
Benutzeravatar
Mawilo
User
Beiträge: 446
Registriert: Sonntag 22. Februar 2004, 10:58
Wohnort: Sachsen
Kontaktdaten:

Dienstag 31. Januar 2006, 18:34

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').
CM
User
Beiträge: 2464
Registriert: Sonntag 29. August 2004, 19:47
Kontaktdaten:

Dienstag 31. Januar 2006, 19:10

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
Benutzeravatar
jens
Moderator
Beiträge: 8482
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Mittwoch 1. Februar 2006, 07:54

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. :)

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
blubbaz
User
Beiträge: 3
Registriert: Sonntag 25. September 2005, 17:46
Wohnort: Bremen

Freitag 3. Februar 2006, 11:40

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. ;)
Antworten