Argparse URL type



让我们有一个简单的argparser,其中包含一个表示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自定义验证函数?

您可以使用urllib.parse中的urlparse函数,并检查它是否能够从URL中提取所有必需的组件:

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 URL

相关内容

  • 没有找到相关文章

最新更新