Seite 1 von 1
tempdatei und webbrowser.open() unter Linux
Verfasst: Montag 6. August 2007, 14:27
von jens
Ich möchte gern eine html Datei in einer Temp Datei speichern und direkt im Broweser aufrufen:
Code: Alles auswählen
import os, tempfile, webbrowser
def debug_response(content):
fd, file_path = tempfile.mkstemp(prefix="PyLucid_unittest_", suffix=".html")
os.write(fd, content)
os.close(fd)
url = "file://%s" % file_path
webbrowser.open(url)
print url
debug_response("TEST!")
Klappt unter Windows wunderbar.
Unter Linux geht's allerdings nicht
Firefox baut die URL irgendwie um. z.B. sieht die so aus:
file:///tmp/PyLucid_unittest_QD7tqp.html firefox mach daraus allerdings in der URL-Zeile das:
file:///home/jens/Desktop/%22file:///tmp/PyLucid_unittest_QD7tqp.html%22
Weiß jemand warum?
Verfasst: Montag 6. August 2007, 14:37
von veers
Komisch, bei mir scheint das zu gehen.
Verfasst: Montag 6. August 2007, 14:49
von thelittlebug
hi,
bei mir gehts auch einwandfrei, es geht halt der lynx auf und nicht der firefox
lgherby
Verfasst: Montag 6. August 2007, 15:28
von jens
Also es läuft unter Ubuntu Edgy.
Ich hab jetzt allerdings folgendes gemacht: Ich hab zusätzlich
Epiphany installiert und folgende Zeile versucht diesen zu starten:
webbrowser._tryorder.insert(0, 'epiphany')
Der zeigt die Seite an.
Verfasst: Montag 6. August 2007, 17:16
von EnTeQuAk
Hallo Jens!
Bei mir Funktioniert es unter Fedora 7 ebenso wunderbar, wie bei meinen Vorrednern.
Probiere doch mal einfach nur `webbrowser.open(file_path)` aus. Firefox sollte automatisch erkennen, das es sich um einen Absoluten (sollte `file_path` absolut sein) Pfad handelt.
Um welche Version von FF handelt es sich, die das ganze nicht richtig anzeigt?
MfG EnTeQuAk
Verfasst: Montag 6. August 2007, 17:21
von jens
Also ohne ein "file://" sucht er wohl nach einer Domain... Auf jeden Fall steht dann sowas in der URL-Zeile:
http://www.".com/tmp/PyLucid_unittest_SdtG2Z.html%22
Ist die aktuelle bei Ubuntu
Feisty: v2.0.0.6
(Bin übrigends nicht mehr mit Edgy unterwegs
)
Verfasst: Dienstag 7. August 2007, 09:48
von jens
Nun hab ich noch ein anderes "Problem"... Die Temp Dateien sollten auch automatisch gelöscht werden.
z.Z. mache ich das so:
Code: Alles auswählen
import os, tempfile, webbrowser, time
def debug_response(content):
fd, file_path = tempfile.mkstemp(prefix="PyLucid_unittest_", suffix=".html")
os.write(fd, content)
os.close(fd)
url = "file://%s" % file_path
print "DEBUG html page in Browser! (url: %s)" % url
webbrowser.open(url)
time.sleep(0.5)
os.remove(file_path)
debug_response("TEST!")
Mit time.sleep() warte ich also, damit der Browser auch Zeit hat zu laden. Hat der Browser die Datei geladen, kann man sie einfach löschen.
Dumm ist allerdings, das der normale Ablauf dadurch verzögert wird. Wie könnte man das in einen seperaten Thread auslagern, der dann warten kann und die Datei löscht???
Verfasst: Dienstag 7. August 2007, 12:45
von jens
So, nun ist der Sourcecode online, wo ich das mit dem webbrowser brauche:
http://pylucid.net:8080/pylucid/browser ... S_Login.py
Ich teste mit dem django Test Client:
http://www.djangoproject.com/documentat ... st_client/
Um zu sehen, warum ein Ergebnis im unittest nicht stimmt, kann man natürlich den reinen HTML Code durchstöbern. Aber daraus wird man oft nicht schlau. Also schreibe ich den in eine Temp Datei und zeige diese im Browser an...