让我们使用一个简单的URL解析器,其中有一个参数表示URL。
from argparse import ArgumentParser
def my_url(arg):
"""
Some url validation
"""
parser = ArgumentParser(
description="foobar"
)
parser.add_argument(
"-u",
"--url",
type=my_url,
help="foobar",
)是否准备好接受函数来验证参数是否为URL,以省略my_url自定义验证函数?
发布于 2022-09-14 14:55:20
您可以使用来自urlparse的urllib.parse函数&检查它是否能够从urllib.parse中提取出所有必需的组件:
from urllib.parse import urlparse
def my_url(arg):
url = urlparse(arg)
if all((url.scheme, url.netloc)): # possibly other sections?
return arg # return url in case you need the parsed object
raise ArgumentTypeError('Invalid URL')结果:
parser.parse_args(['-u', 'http://locahost:2000']) # pass
parser.parse_args(['-u', 'http/locahost:2000']) # Invalid URL
parser.parse_args(['-u', 'thisisurl']) # Invalid URLhttps://stackoverflow.com/questions/73718877
复制相似问题