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

在Python 3中打开URL或本地文件,python,python-3.x,url,uri,Python,Python 3.x,Url,Uri,我有一根绳子 我想: 如果这个字符串是一个URL,我想打开这个URL 否则,我想用这个名字打开一个本地文件 如果没有这样的对象,则引发异常 在Python3中,正确且简单(如果可能)的方法是什么 主要问题是确定字符串是否为URL的正确方法。这还没有经过测试,所以将其视为伪代码 if s.startswith('http'): # Do something elif os.path.isfile(s): file = open(s, 'r') else: raise E

我有一根绳子

我想:

  • 如果这个字符串是一个URL,我想打开这个URL

  • 否则,我想用这个名字打开一个本地文件

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

在Python3中,正确且简单(如果可能)的方法是什么


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

这还没有经过测试,所以将其视为伪代码

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

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

这取决于你所说的URL是什么意思。如果它是一个网址,它通常以
http://
https://
开头(通常,这些都是您关心的情况)。但是,也可能是以
ftp://
或其他协议开始的。但是,大多数库都接受URI,其中包括文件URI。在该方案中,文件位置看起来像一个以
file://
开头的URL,因此您可以传递字符串,而不管它是web地址还是文件,库会处理它。没有直接的方法可以知道地址是否有效,但如果地址无效,库将抛出异常。

什么是无效的url(如“),即使它遵循url格式?是否应该打开?或者通过请求或其他方式检查