首先,我很抱歉这个标题没有给出一个关于我的问题是什么的完美 idea ,我有点挣扎,所以我将用一个可复制的例子更清楚地说明它:

我有以下代码:

example.py:

import argparse


def parse_args():
    """Command line argument parser

    Returns:
        The extra arguments
    """

    parser = argparse.ArgumentParser(description="Arguments for test runner")
    parser.add_argument('-e', '--extra_args', type=str, default="", help="Extra arguments. Enter as a single line encapsulated by quotes. Example: -e \"--repeat=0 otherstuff -x anotherpositional\"")

    arguments = parser.parse_args()

    return arguments


if __name__ == "__main__":
    args = parse_args()
    print(args.extra_args)

然后,--extra_args参数将用作子流程调用的位置参数.

我需要通过的论点如下:--repeat=0.它不起作用,我得到了以下结果:

python example.py -e "toto" # This print toto
python example.py -e "--repeat = 0" # This print --repeat = 0
python example.py -e "--repeat" # error: argument -e/--extra_args: expected one argument
python example.py -e "--repeat=0" # error: argument -e/--extra_args: expected one argument

我的理解是,解析器将--repeat作为一个参数进行处理,发现它没有任何值,然后中断.但不幸的是,我别无 Select ,只能写"--repeat=0"全部附加,因为软件接收到它.

你知道有什么解决办法吗?

推荐答案

我找到了一个丑陋的解决办法,但如果它退出,我会喜欢一个更好的解决方案.

我添加了以下功能:

def __workaround_for_extra_utr_args():
    """This workaround is necessary because utr can receives args at \"--repeat=0\" which are not processable by arg parse, even as a string"""
    import sys

    index_of_extra_args = [sys.argv.index(v) for v in ['-e', '--extra_utr_args'] if v in sys.argv]
    space = " "

    if index_of_extra_args:
        index_of_extra_args = index_of_extra_args[0]

        if space not in sys.argv[index_of_extra_args + 1]:
            sys.argv[index_of_extra_args + 1] = sys.argv[index_of_extra_args + 1] + space

在调用解析器之前调用它,它将能够返回字符串,然后可以在解析之后删除额外的空间.

Python相关问答推荐

Django管理面板显示字段最大长度而不是字段名称

如何将ctyles.POINTER(ctyles.c_float)转换为int?

沿着数组中的轴计算真实条目

处理带有间隙(空)的duckDB上的重复副本并有效填充它们

try 将一行连接到Tensorflow中的矩阵

如何创建一个缓冲区周围的一行与manim?

关于Python异步编程的问题和使用await/await def关键字

用渐近模计算含符号的矩阵乘法

如何在FastAPI中为我上传的json文件提供索引ID?

巨 Python :逆向猜谜游戏

使用Python异步地持久跟踪用户输入

解决Geopandas和Altair中的正图和投影问题

504未连接IB API TWS错误—即使API连接显示已接受''

如何编辑此代码,使其从多个EXCEL文件的特定工作表中提取数据以显示在单独的文件中

如何为需要初始化的具体类实现依赖反转和接口分离?

Pandas:将值从一列移动到适当的列

如何关联来自两个Pandas DataFrame列的列表项?

如何在Polars中将列表中的新列添加到现有的数据帧中?

有什么方法可以在不对多索引DataFrame的列进行排序的情况下避免词法排序警告吗?

如何在polars group_by中将多个行分组到列表中