我可以使用什么来调用操作系统在用户默认的浏览器中打开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. 多操作系统与SIngle操作系统电话和服务器开发
- 4. 打电话给
- 5. 打电话给gc.collect()
- 6. STDIN似乎在打电话给“系统”后调用mpiexec
- 7. 打开android系统
- 8. 开始打电话
- 9. 从电话文件系统打开资源文件
- 10. 在多操作系统电话上开发的平台
- 11. 打电话给联系人时打算启动应用程序
- 12. 打电话给空闲块
- 13. WebRTC打电话给PTSN
- 14. PLS-00306:打电话给
- 15. 打电话给选民
- 16. 当我打电话给CGRectIntersectsRect
- 17. 无法在mac操作系统中使用geckodriver打开Firefox
- 18. 检查所有插座在Linux操作系统打开
- 19. 无法打开备份设备。操作系统错误5
- 20. android dev通过操作系统打开文件
- 21. CruiseControl无法在客户操作系统中打开连接
- 22. 只允许Android操作系统打开启动器活动
- 23. Python:如何在操作系统中打开时写入文件
- 24. 无法打开备份设备操作系统错误1392
- 25. 使用操作系统将Golang文件上传到s3打开
- 26. 使操作系统在Python中打开目录
- 27. 打电话给Fancybox从iframe的父母没有手动打开
- 28. 如何打开系统SQLiteDatabase
- 29. 无法打开android系统
- 30. 打开电话的SIGABRT
你在找自从Windows,MacOS和Linux的都有不同的调用约定什么操作系统。 – koblas 2010-11-18 16:18:20