如何将一个或多个参数传递给 python,将它们与可选的过滤器参数进行匹配,并仅将匹配的参数添加到数组中?

问题描述 投票:0回答:1

我想要:

  1. 一个或多个 ()*
    named
    参数传递给 Python 脚本,
  2. 将可选的
    filter
    参数也传递给脚本,
  3. 将所有其他
    arguments
    filter
    (如果提供)
  4. 相匹配
  5. 将所有
    arguments
    (匹配
    filter
    参数(如果提供))
    添加到
    array[]
    ,
  6. 如果没有给出
    error message and syntax help
    或者只给出了
    arguments
    参数,则使用
    filter
    退出(
    filter
    依赖于 - 需要 - 其他
    arguments
    )。

例如:

python script.py

应生成

usage
帮助消息,然后退出。

python script.py --arg string

应将 arg

string
添加到
array[]

python script.py --arg string1 --arg string2 --arg string3

应将所有

arguments
添加到
array[]

python script.py --arg string1 --arg string2 --arg string3 --filter '*2*'

应该仅将那些与 arguments

 匹配的 
filter
添加到
array[]
,因此在这种情况下,它只会将 
string2
 添加到 
array[]
 并忽略其余部分。

所以:

    那里
  1. 必须至少一个argument
  2. 必须
  3. 有一个filter论证
    
    
    这是一个示例,但它无法按预期工作,因为我认为
  4. group = parser.add_mutually_exclusive_group(required=True)
并不按照我上面解释的方式运行 - 它只需要任一参数,但没有指定需要哪个参数:

import argparse

# Create an ArgumentParser object
parser = argparse.ArgumentParser(description='Dependent argument testing')

# Create a mutually exclusive group for the --arg and --filter options
group = parser.add_mutually_exclusive_group(required=True)

# Define the --arg argument (required)
group.add_argument('--arg', type=str, help='Specify the argument')

# Define the --filter argument (optional)
group.add_argument('--filter', type=str, help='Specify the filter (optional)')

# Parse the command-line arguments
args = parser.parse_args()

# Access the values of the arguments
if args.arg:
    print(f'Argument: {args.arg}')
if args.filter:
    print(f'Filter: {args.filter}')

忘记互斥的群体。
python dependencies arguments argparse optional-parameters
1个回答
0
投票
获取

script.py --arg string1 --arg string2 --arg string3 --filter '*2*'

使用“-h/--help”获取自动用法和帮助。在没有给出任何参数的情况下尝试获取使用是可能的,但我认为不值得付出额外的努力。
将“--arg”定义为“追加”,您可以根据需要添加任意数量的字符串。

'--filter'可以是默认的'store'。

包括

print(args)

进行测试。

剩下的就是后期解析逻辑和代码了。

© www.soinside.com 2019 - 2024. All rights reserved.