我希望有以下语法:
python utility.py file1 FILE1 file2 FILE2
其中file1和file2是可选参数。使用以下语法可以很简单地使其工作:
python utility.py --file1 FILE1 --file2 FILE2
使用
parser.add_argument('--file1',type=file)
parser.add_argument('--file2',type=file)
然而,如果我删除破折号,argparse开始将其解释为位置参数而不是可选参数…
换句话说,有没有可能明确地告诉argparse一个参数是可选的还是位置的,这样我就可以有没有破折号的可选参数?
3条答案
按热度按时间qyyhg6bp1#
没有办法让
argparse
为你做这件事。但是,您可以让argparse
接受任意数量的位置参数:当然,您可能希望添加一些检查,以确保至少提供了1个文件,等等。
编辑
我仍然不能100%确定您想要什么,但是如果
file1
和file2
是文字字符串,您可以通过预处理sys.argv
来解决这个问题。当然,这仍然会使你的帮助信息的格式变得奇怪,但是你总是可以添加一个后记来解释这两种形式都是可以的:py49o6xq2#
另一个例子是:
train.py
然后你可以只运行这段代码,参数不带破折号
按升序排列
c3frrgcw3#
有同样的问题。我的解决方法是: