2009-08-29 6 views
6

Ich habe ein Python-Programm, das mehrere URLs in separat Tabs in einem neuen Browser-Fenstern jedoch öffnet, wenn ich das Programm von der Kommandozeile aus und öffnen Sie den BrowserUnterdrückungs/stderr umleiten, wenn Python unterliegt den Aufruf

webbrowser.open_new(url) 
mit

Der Stderr von Firefox druckt zu bash. Mit Blick auf die docs scheinen kann ich nicht einen Weg zu finden, zu umleiten oder ihnen

unterdrücken Ich habe Zuflucht zu

mit
browserInstance = subprocess.Popen(['firefox'], stdout=log, stderr=log) 

Wo log ein tempfile ist & dann die anderen Registerkarten mit webbrowser.open_new öffnen.

Gibt es eine Möglichkeit, dies innerhalb des Webbrowser-Moduls zu tun?

Antwort

5

Was gibt Ihnen webbrowser.get()?

Wenn Sie das tun

webbrowser.get('firefox').open(url) 

dann sollten Sie keine Ausgabe sehen. Das Webbrowser-Modul wählt stderr für einige Browser aus - insbesondere für die Textbrowser und dann für solche, bei denen es nicht sicher ist. Für alle UnixBrowser, die den Hintergrund auf True gesetzt haben, sollte keine Ausgabe sichtbar sein.

0

Was ist mit dem Senden der Ausgabe an /dev/null anstelle einer temporären Datei?

0

Ich denke Martin hat Recht mit Unix-Systemen, aber es sieht so aus, als ob die Dinge unter Windows anders sind. Ist das auf einem Windows-System?

Auf Windows es wie webbrowser.py sieht entweder gehen Sie einen webbrowser.WindowsDefault Browser geben, die die URL

os.startfile(url) 

mit öffnet oder wenn Firefox vorhanden ist, es geht um Ihnen einen webbrowser.BackgroundBrowser , die startet den Browser unter Windows mit:

p = subprocess.Popen(cmdline) 

Es sieht aus wie nur haben Unix-Browser die Fähigkeit stderr in der Web-Browser-Modul zu umleiten. Sie sollten in der Lage sein herauszufinden, welchen Browsertyp Sie dabei erhalten.

In einer interaktiven Python-Konsole.

Verwandte Themen