我设置了以下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 来解析
--
参数?
不确定这是否是你的意思,但使用这个逻辑你可以检测 - 并使用这样的东西处理其他:
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")
所以回答你的问题:是的,但它相当小众。