识别本地文件或 url 的 pythonic 方式
pythonic way to identify a local file or a url
URL
http://www.example.com
www.example.com
http://example.com
https://example.com
本地文件
file:///example.html
/home/user/example.html
./home/user/example.html
.dir/data/example.html
考虑以上输入并识别给定的输入字符串是本地常规文件还是 URL?
我试过的
import os
from urllib.parse import urlparse
def is_local(_str):
if os.path.exists(path1):
return True
elif urlparse(_str).scheme in ['','file']:
return True
return False
通话
is_local('file:///example.html') # True
is_local('/home/user/example.html') # True
is_local('./home/user/example.html') # True
is_local('.dir/data/example.html') # True
is_local('http://www.example.com') # False
is_local('www.example.com') # True
is_local('http://example.com') # False
is_local('https://example.com') # False
有没有什么 pythonic 方法可以在不使用 urllib 的情况下识别文件是本地文件还是 URL?
您可以组合使用 urllib.parse.urlpath
和 os.path.exisis
。第一个从 URL 中提取文件路径,第二个检查路径是否实际引用文件。
from urllib.parse import urlparse
from os.path import exists
def is_local(url):
url_parsed = urlparse(url)
if url_parsed.scheme in ('file', ''): # Possibly a local file
return exists(url_parsed.path)
return False
URL
http://www.example.com
www.example.com
http://example.com
https://example.com
本地文件
file:///example.html
/home/user/example.html
./home/user/example.html
.dir/data/example.html
考虑以上输入并识别给定的输入字符串是本地常规文件还是 URL?
我试过的
import os
from urllib.parse import urlparse
def is_local(_str):
if os.path.exists(path1):
return True
elif urlparse(_str).scheme in ['','file']:
return True
return False
通话
is_local('file:///example.html') # True
is_local('/home/user/example.html') # True
is_local('./home/user/example.html') # True
is_local('.dir/data/example.html') # True
is_local('http://www.example.com') # False
is_local('www.example.com') # True
is_local('http://example.com') # False
is_local('https://example.com') # False
有没有什么 pythonic 方法可以在不使用 urllib 的情况下识别文件是本地文件还是 URL?
您可以组合使用 urllib.parse.urlpath
和 os.path.exisis
。第一个从 URL 中提取文件路径,第二个检查路径是否实际引用文件。
from urllib.parse import urlparse
from os.path import exists
def is_local(url):
url_parsed = urlparse(url)
if url_parsed.scheme in ('file', ''): # Possibly a local file
return exists(url_parsed.path)
return False