如何在 python argparser 中使用“--”作为参数

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

我设置了以下Python代码,其中每当用户传递--作为参数时,程序都会返回

“something”

#script.py

import argparse

parser = argparse.ArgumentParser()

parser.add_argument(
    "--",
    help="Prints something",
    action="store_true",
    dest="print_something",
)

args = parser.parse_args()

if args.print_something:
    print("something")

输出如下:

$ python .\script.py --

usage: script.py [-h] [--]
playground.py: error: unrecognized arguments: --

Argparse 无法识别

--
争论。

我尝试使用转义序列,例如将

-\-\-
放在
parser.add_argument(
下,但程序并未按应有的方式运行。

当然,有一个使用

sys.arg
的解决方法,类似于:

import sys

if "--" in sys.argv:
    print("something")

但是上述方法对于具有大量参数的项目来说是不切实际的——尤其是对于那些同时包含功能参数和位置参数的项目。

因此,有没有办法使用 argparser 来解析

--
参数?

python python-3.x argparse
1个回答
0
投票

不确定这是否是你的意思,但使用这个逻辑你可以检测 - 并使用这样的东西处理其他:

import argparse

parser = argparse.ArgumentParser()

# Define a positional argument to capture `--` and any arguments after it
parser.add_argument(
    'args',
    nargs=argparse.REMAINDER,
    help="Arguments after --"
)

parsed_args = parser.parse_args()

# Check if `--` is in the arguments
if '--' in parsed_args.args:
    print("Found -- in arguments")
    # You can process the arguments after `--` here
    remaining_args = parsed_args.args[parsed_args.args.index('--') + 1:]
    # process other arguments here
    print("Arguments after --:", remaining_args)
else:
    print("No -- found in arguments")

所以回答你的问题:是的,但它相当小众。

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