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

Вызовите операционную систему для открытия URL-адреса?

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

4b9b3361

Ответ 1

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

import webbrowser

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

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

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

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

Ответ 2

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

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

Лучше в 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.

Ответ 3

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

webbrowser.open(url)

Ответ 4

Затем, как насчет смешивания кодов @kobrien и @bobince вверх:

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)