调用操作系统打开网址?

     2023-02-22     163

关键词:

【中文标题】调用操作系统打开网址?【英文标题】:Call to operating system to open url? 【发布时间】:2011-05-12 03:30:31 【问题描述】:

我可以使用什么来调用操作系统以在用户默认使用的任何浏览器中打开 URL? 不担心跨操作系统兼容性;如果它在 linux 中运行,对我来说就足够了!

【问题讨论】:

您在寻找什么操作系统,因为 Windows、MacOS 和 Linux 都有不同的调用约定。 【参考方案1】:

以下是使用给定 url 打开用户默认浏览器的方法:

import webbrowser

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

这是有关此功能的文档。它是 Python 标准库的一部分:

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

我已经在 Linux Ubuntu 10.10 上成功测试了这个。

【讨论】:

在 OS X 10.8.2 和 Python 2.7.2 上,这 not 似乎工作。但是,它在带有 Python 2.7.3 的 Windows 7 上运行良好。在带有 XFCE 4.8 和 Python 2.7.3 的 Ubuntu 12.04 上也可以正常工作。 好的,在带有 Python 2.7.4 的 OS X 10.8.2 上,这似乎确实有效。因此,令人讨厌的是,它可能只在较新版本的 Python 上可靠地工作。 我得到 webbrowser.open(url[, new=0[, autoraise=True]]) ^ SyntaxError: invalid syntax 我正在使用 OSX 10.8.4 和 Python 2.7.2 并验证它确实有效。但是,如果您使用 url 'google.com' 它会失败而不会出错。您需要指定“google.com”。 FWIW,这是import antigravity 使用的:hg.python.org/cpython/file/tip/Lib/antigravity.py【参考方案2】:

就我个人而言,我真的不会使用webbrowser 模块。

对于特定浏览器的嗅探是一个复杂的混乱,如果他们安装了多个浏览器,它将找不到用户的默认浏览器,如果它不知道它的名称,它将找不到浏览器(例如铬合金)。

在 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(),并且它也有一个回退。 当我将 Safari 作为我的默认浏览器时,以及当我在 Mac 上将 Chrome 作为我的默认浏览器时,webbrowser 模块对我有用。 请注意,webbrowser 现在也使用xdg-open。因此,这个答案在现代 python 上已经过时了,没有理由不使用 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】:

看看webbrowser module。

【讨论】:

vb如何调用系统默认程序打开指定网页?

vb如何调用系统默认的浏览器打开指定网页,类似于hao123的桌面版,单击图标后什么也不提示,直接用系统默认的浏览器去打开设置好的网址地址。如果有工程源代码,修改后网站编译就能用,那是最好的。如果有的希望分享一... 查看详情

.net6用默认浏览器打开网址

用浏览器打开网址,之前经常是直接调用:Process.Start("https://www.cnblogs.com/wzwyc/");貌似升级.NET6以后,上面的调用方式会出错,后面网上查了一下资料,相当于设置一下UseShellExecute为true,就可以正常打开了。Process.S 查看详情

win2003打开网页时总是提示添加网址到信任站点的设置方法

...页提示”等等描述都是对这个问题的反应。  Win2003的操作系统,的确比其它操作系统在安全上增加了不少,这是为用户所考 查看详情

在android系统中怎样用webview打开一些非http开头的网址

像淘宝网的聚划算的商品网址开头都是jhs://,用WebView点击这种商品时,就提示找不到网页,请问这种问题如何解决?参考技术A用客户端吧,API接口对不上 查看详情

一次又一次地在新的相同标签中打开一个网址

...到答案。如何使用window.open在新标签页中打开链接?重复调用应该重新加载同一个标签,而不是打开一个新标签。我有一个按钮,点击时应该加载一个url。重复单击应在同一选项卡/窗口中重新加载。【问题讨论】:***.com/questions 查看详情

我可以在哪里更改 FCM 网络通知点击操作网址?

...1-07-1302:10:09【问题描述】:我试图定义当用户点击通知时打开的url,但它继续转到url(\'/\')只要。我用payload.data发送了新的url,但我不知道在客户端哪里可以定义这个路由,所以当用户点击通知时它会打开。我使用laravel-no 查看详情

window.open打开网址被拦截(代码片段)

window.open打开网址被拦截坑位通过window.open打开一个网址,在火狐和IE系列浏览器下会拦截掉,除非用户主动点击允许才会成功,这样用户体验基本是恶心到产品的,而产品又不希望通过location.href来解决。Why应该是浏览器的安全... 查看详情

微信打开网址添加在浏览器中打开提示

...。  既然微信内置浏览器不支持下载,那就只能想办法调用外部浏 查看详情

如何实现扫描二维码,实现网址自动跳转?

二维码里保存网址url字符串,如何实现扫描二维码自动打开这个url,而不需要在点一次这个链接?PS:用同一款二维码扫描软件扫描,有些二维码就可以直接转到网站,有些二位码只显示网址字符串,必须自己在点一下。应该是... 查看详情

android如何调用系统软件打开文件

比如想打开一张图片或者声音,在代码中如何写才能调用系统的相册播放器之类的软件把这个文件给打开?就像J2ME里的midlet.platformRequest(url);也可以把URL写成一个文件的URL给用本地软件给打开参考技术A直接用软件打开何必那么麻... 查看详情

macos系统下配置hosts的方法

...没有扩展名的系统文件,可以用系统自带的记事本等工具打开,作用就是将一些常用的网址域名与其对应的IP地址建立一个关联,当用户在浏览器输入一个需要登录的网址时,系统首先会自动从hosts文件中寻找对应的IP地址,一旦找到,... 查看详情

微信公众号,长链接转短链接,怎么操作

...谢谢一楼朋友,微博那个短链接用微信扫描,是不能直接打开的。我现在是想把短链接搞短一点,这样生成的二维码就简单些,方便扫描可以使用电脑版微信进行长链接的转换,步骤如下。1、首先打开自己的电脑,然后登录电... 查看详情

asp.net发布webapi到服务器,输入调用api后却找不到资源,输入根网址却打开文件目录

问题比较棘手,在线等。应该是你的IIS配置问题,可能是没有启用asp.net。追问嗯,也算是一方面吧,我排查了很多次,就是框架太低的缘故。然后服务器特别老,只有.net3.5框架。我已经无力吐槽,现在只能降版本。可是3.5的API... 查看详情

hosts系统文件(googlehosts)

Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应的IP地址建立一个关联“数据库”,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应... 查看详情

文件打开的过程——调用fd=open()时操作系统所做的工作

...叙述符fd进行其它操作,比方读,写,关闭等操作。各个操作系统打开文件的过程是类似的,本文以Unix为例,介绍打开一个文件操作系统所做的工作。正式介绍这个过程之前先简要介绍几个概念。PCB(processcontrolblock)进程控制块。... 查看详情

ionic3-如何打开富文本内容的网址(hrefs)(代码片段)

...inappbrowser$npminstall--save@ionic-native/in-app-browser然后在网址上调用你的逻辑...例如:importInAppBrowserfrom'@ionic-native/in-app-browser';constructor(privateiab:InAppBrowser)...constbrowser=this.iab.create('https://ionicframework.com/');browser.show();//browser.close() 查看详情

Odoo 8 函数调用打开(树)视图

】Odoo8函数调用打开(树)视图【英文标题】:Odoo8functioncallonopening(tree)view【发布时间】:2016-02-2905:28:22【问题描述】:有没有办法调用python函数(服务器操作)到正在打开的视图。因此,当我单击一个菜单项时,不仅会打开一... 查看详情

selenium操作浏览器的基本方法

...,我们要学的是webdriver框架的API。本篇主要讲如何用Python调用webdriver框架的API,对浏览器做一些常规的操作,如打开、前进、后退、刷新、设置窗口大小、截屏、退出等操作。一、打开网站1.第一步:从selenium里面导入webdriver模... 查看详情