tempdatei und webbrowser.open() unter Linux

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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?

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
veers
User
Beiträge: 1219
Registriert: Mittwoch 28. Februar 2007, 20:01
Wohnort: Zürich (CH)
Kontaktdaten:

Komisch, bei mir scheint das zu gehen.
thelittlebug
User
Beiträge: 188
Registriert: Donnerstag 20. Juli 2006, 20:46
Wohnort: Wien
Kontaktdaten:

hi,

bei mir gehts auch einwandfrei, es geht halt der lynx auf und nicht der firefox

lgherby
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
EnTeQuAk
User
Beiträge: 986
Registriert: Freitag 21. Juli 2006, 15:03
Wohnort: Berlin
Kontaktdaten:

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

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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???

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten