Звоните в операционную систему, чтобы открыть URL? - PullRequest
62 голосов
/ 18 ноября 2010

Что можно использовать для вызова ОС, чтобы открыть URL-адрес в любом браузере, который пользователь имеет по умолчанию?Не беспокоиться о кросс-ОС совместимости;если он работает в Linux, мне этого достаточно!

Ответы [ 5 ]

96 голосов
/ 18 ноября 2010

Вот как открыть браузер пользователя по умолчанию с заданным URL:

import webbrowser

webbrowser.open(url[, new=0[, autoraise=True]])

Вот документация об этой функциональности. Это часть stdlibs Python:

http://docs.python.org/library/webbrowser.html

Я успешно проверил это в Linux, Ubuntu 10.10.

31 голосов
/ 18 ноября 2010

Лично я действительно не стал бы использовать модуль webbrowser.

Это сложная путаница для определенных браузеров, которая не найдет браузер пользователя по умолчанию, если ониУ меня установлено более одного, и он не найдет браузер, если он не знает его имени (например, Chrome).

Лучше в Windows просто использовать функцию os.startfile, которая также работает с URL.В OS X вы можете использовать системную команду open.В Linux есть xdg-open, стандартная команда freedesktop.org, поддерживаемая GNOME, KDE и 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

Это улучшит взаимодействие с пользователем на основных платформах.Возможно, вы можете вернуться к webbrowser на других платформах.Хотя, скорее всего, если вы работаете в непонятной / необычной / встроенной ОС, в которой ничего из вышеперечисленного не работает, скорее всего, webbrowser тоже не удастся.

5 голосов
/ 13 мая 2013

Тогда как насчет смешивания кодов @kobrien и @bobince up:

import subprocess
import webbrowser
import sys

url = 'http://test.com'
if sys.platform == 'darwin':    # in case of OS X
    subprocess.Popen(['open', url])
else:
    webbrowser.open_new_tab(url)
5 голосов
/ 18 ноября 2010

Вы можете использовать модуль webbrowser .

webbrowser.open(url)
2 голосов
/ 18 ноября 2010

Посмотрите на модуль веб-браузера .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...