Что я могу использовать для вызова ОС для открытия URL-адреса в любом браузере, который пользователь имеет по умолчанию? Не беспокоиться о совместимости между ОС; если он работает в Linux, для меня это достаточно!
Вызовите операционную систему для открытия URL-адреса?
Ответ 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)
Ответ 5
Посмотрите модуль веб-браузера.