Call to operating system to open url?
Here is how to open the user's default browser with a given url:
import webbrowserwebbrowser.open(url[, new=0[, autoraise=True]])
Here is the documentation about this functionality. It's part of Python's stdlibs:
http://docs.python.org/library/webbrowser.html
I have tested this successfully on Linux, Ubuntu 10.10.
Personally I really wouldn't use the webbrowser
module.
It's a complicated mess of sniffing for particular browsers, which will won't find the user's default browser if they have more than one installed, and won't find a browser if it doesn't know the name of it (eg Chrome).
Better on Windows is simply to use the os.startfile
function, which also works on a URL. On OS X, you can use the open
system command. On Linux there's xdg-open
, a freedesktop.org standard command supported by GNOME, KDE and XFCE.
if sys.platform=='win32': os.startfile(url)elif sys.platform=='darwin': subprocess.Popen(['open', url])else: try: subprocess.Popen(['xdg-open', url]) except OSError: print 'Please open a browser on: '+url
This will give a better user experience on mainstream platforms. You could fall back to webbrowser
on other platforms, perhaps. Though most likely if you're on an obscure/unusual/embedded OS where none of the above work, chances are webbrowser
will fail too.
Then how about mixing codes of @kobrien and @bobince up:
import subprocessimport webbrowserimport sysurl = 'http://test.com'if sys.platform == 'darwin': # in case of OS X subprocess.Popen(['open', url])else: webbrowser.open_new_tab(url)