在Python 3中打开URL或本地文件

时间:2018-07-24 13:04:13

标签: python python-3.x url uri

我有一个字符串。

我想要:

  • 如果此字符串是URL,我想打开此URL。

  • 否则,我要打开一个具有此名称的本地文件。

  • 如果没有这样的对象,请引发异常。

在Python 3中,正确足够简单(如果可能)的方法是什么?

主要问题是确定字符串是否为URL的正确方法。

3 个答案:

答案 0 :(得分:2)

取决于URL的含义。如果是网址,则通常以http://https://开头(通常,无论如何,这都是您关心的情况)。但是,也有可能以ftp://或其他协议开头。但是,大多数库都接受 URI ,其中包括文件URI 。在该方案中,文件位置看起来像以file://开头的URL,因此您可以传递字符串,而不必关心它是Web地址还是文件,并且库将负责处理。无法直接知道地址是否有效,但是如果无效,则库将引发异常。

答案 1 :(得分:0)

尝试一下:

import os
import webbrowser
import requests
webbrowser.open(s) if os.path.isfile(s) or requests.get(s) else exec("raise Exception")

答案 2 :(得分:-1)

这未经测试,因此将其视为伪代码。

if s.startswith('http'):
    # Do something
elif os.path.isfile(s):
    file = open(s, 'r')
else:
    raise Exception