相关疑难解决方法(0)

读取命名的命令参数

我可以argparse用来读取不需要按特定顺序排列的命名命令行参数吗?我浏览了文档但其中大部分内容都集中在根据提供的参数显示内容(例如--h).

现在,我的脚本读取有序的,未命名的参数:

myscript.py foo-val bar-val

使用sys.argv:

foo = sys.argv[1]
bar = sys.argv[2]
Run Code Online (Sandbox Code Playgroud)

但我想更改输入,以便通过命名参数与命令无关:

myscript.py --bar = bar-val --foo = foo-val

python arguments python-3.x

39
推荐指数
2
解决办法
2万
查看次数

从自定义操作捕获ArgumentTypeError异常

从我自己的自定义操作中抛出ArgumentTypeError异常并让argparse为我捕获它的最佳做法是什么?

似乎argparse的try/except块不能为我的自定义操作处理此异常.虽然它对内置动作很好.

class unique_server_endpoints(argparse.Action):
    """This class avoids having two duplicate OuterIPs in the client argument list"""
    def __call__(self, parser, namespace, values, option_string=None):
        ips = set()
        endpoints = []
        for r in values:
            ep = server_endpoint(r)
            if ep[0] in ips:
                raise argparse.ArgumentTypeError("Duplicate OuterIPs found")
            else:
                ips.add(ep[0])
                endpoints.append(ep)
        setattr(namespace, self.dest, endpoints)
Run Code Online (Sandbox Code Playgroud)

group.add_argument('-c', "--client", nargs = 2,
            dest = "servers", action = unique_server_endpoints,
Run Code Online (Sandbox Code Playgroud)

例如,在上面的代码中,如果我有重复的IP,则异常将落入函数并打印丑陋的堆栈跟踪.我不希望这样,我也不想在main中放置一个try/except块.

python exception argparse

9
推荐指数
1
解决办法
1317
查看次数

argparse参数的目录路径

问题:我想写为用户在输入一个目录的路径add.argumentArgumentParser()

到目前为止:我已经写了这个

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('path', option = os.chdir(input("paste here path to biog.txt file:")), help= 'paste path to biog.txt file')
Run Code Online (Sandbox Code Playgroud)

任何想法,什么是该问题的理想解决方案?

python argparse

8
推荐指数
3
解决办法
1万
查看次数

标签 统计

python ×3

argparse ×2

arguments ×1

exception ×1

python-3.x ×1