我可以使用什么来调用操作系统在用户默认的浏览器中打开URL? 不担心跨OS兼容性;如果它在linux下工作对我来说足够了!打电话给操作系统打开url?
回答
这里是如何与给定的URL打开用户的默认浏览器:
import webbrowser
webbrowser.open(url[, new=0[, autoraise=True]])
下面是有关此功能的文档。这是Python的stdlib之间的一部分:
http://docs.python.org/library/webbrowser.html
我已经成功地测试了这个在Linux,Ubuntu的10.10。
FWIW它也适用于Windows。 – martineau 2010-11-18 21:17:50
我在Ubuntu 12.04上测试它,它也可以正常工作, – 2013-01-11 18:57:30
它适用于Mac。 – daviewales 2013-02-04 15:28:42
您可以使用webbrowser模块。
webbrowser.open(url)
我个人真的不会使用webbrowser
模块。
这是一个复杂的嗅探特定的浏览器,如果他们有多个安装程序将不会找到用户的默认浏览器,并且如果它不知道它的名称将不会找到浏览器(如Chrome)。
在Windows上更好的是简单地使用os.startfile
函数,该函数也适用于URL。在OS X上,您可以使用open
系统命令。在Linux上有xdg-open
,这是GNOME,KDE和XFCE支持的freedesktop.org标准命令。
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
也可能会失败。
我刚刚查看了webbrowser的源代码,我不确定我是否同意你的看法。只有unix嗅探看起来有点不可靠,甚至它应该能够在KDE或GNOME中正常工作(它可能使用补丁来使用'xdg-open',尽管'xdg-open'使用类似的嗅探)。例如,win32实现已经使用'os.startfile()',并且它也有一个后备。 – 2010-11-18 23:52:48
当我将Safari作为默认浏览器时,以及在Mac上将Chrome作为默认浏览器时,webbrowser模块为我工作。 – daviewales 2013-02-04 15:31:29
请注意,webbrowser现在也使用'xdg-open'。因此,这个答案在现代python上已经过时了,没有理由不使用webbrowser模块。 – Chronial 2017-09-19 14:25:06
那么怎么样混合@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)
- 1. 谁打电话Linux系统
- 2. 拨打电话应用程序所有操作系统
- 3. 打电话给gc.collect()
- 4. 打开android系统
- 5. 开始打电话
- 6. 在多操作系统电话上开发的平台
- 7. 打电话给联系人时打算启动应用程序
- 8. PLS-00306:打电话给
- 9. 打电话给空闲块
- 10. 打电话给选民
- 11. 当我打电话给CGRectIntersectsRect
- 12. WebRTC打电话给PTSN
- 13. 使用操作系统将Golang文件上传到s3打开
- 14. 无法打开备份设备。操作系统错误5
- 15. 使操作系统在Python中打开目录
- 16. 只允许Android操作系统打开启动器活动
- 17. Python:如何在操作系统中打开时写入文件
- 18. 无法在mac操作系统中使用geckodriver打开Firefox
- 19. 如何打开系统SQLiteDatabase
- 20. 每当打出电话时打开扬声器电话
- 21. 开发操作系统
- 22. 如何使用给定的电话号码打开电话应用程序来拨打电话?
- 23. IONotificationPortDestroy - 打电话还是不打电话?
- 24. 开放源代码云操作系统/操作系统架构
- 25. 拨打电话作为选项拨打电话记录
- 26. 电话灯来电时打开
- 27. 无法打电话工作
- 28. 打开图形操作IOS
- 29. 拨打电话
- 30. 打电话Thread.wait()
你在找自从Windows,MacOS和Linux的都有不同的调用约定什么操作系统。 – koblas 2010-11-18 16:18:20