首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Argparse类型

Argparse类型
EN

Stack Overflow用户
提问于 2022-09-14 14:46:04
回答 1查看 143关注 0票数 0

让我们使用一个简单的URL解析器,其中有一个参数表示URL。

代码语言:javascript
复制
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自定义验证函数?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-14 14:55:20

您可以使用来自urlparseurllib.parse函数&检查它是否能够从urllib.parse中提取出所有必需的组件:

代码语言:javascript
复制
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')

结果:

代码语言:javascript
复制
parser.parse_args(['-u', 'http://locahost:2000'])  # pass
parser.parse_args(['-u', 'http/locahost:2000'])  # Invalid URL
parser.parse_args(['-u', 'thisisurl'])  # Invalid URL
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73718877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档