我正在尝试理解argparse
包,但我真的无法找到这个非常简单的问题的答案:
-a
和--argument
之间有什么区别?有时,我会在add_argument()
中找到这两个:
parser.add_argument(
"-f", "--file",
help="file path"
)
答案 0 :(得分:2)
如果两者都被指定,那么argparse将以长格式('argument')而不是短格式('a')存储值。它将推断出目的地,因此“--foo-bar”将存储在foo_bar
。
您可以将短格式混合在一起并使用单个连字符(-af
)但与某些* NIX命令不同,顺序很重要:如果您的参数需要值(-f filename
),那么参数必须作为短格式参数组的最终参数出现:
cmd -af my_file # works
cmd -fa my_file # does not work
将此与允许tar(1)
的怪物tar -cfC myfile.tar ./directory
进行比较,并将其正确排序为逻辑等效于tar -c -f myfile.tar -C ./directory
。此外,某些长格式允许在指定选项tar -cf myfile.tar
时使用'=',而不是tar -c --file=myfile.tar
。你不能在短格式上使用'='。
幸运的是,python argparse并不关心'='。使用与否,简短形式或长形式。
# All equivalent:
cmd -af=my_file
cmd -a -f my_file
cmd -a -fmy_file
cmd -afmy_file
cmd --file my_file -a
cmd --file=my_file -a
重要吗?另一个答案表明,长形式有助于提高可读性。简短的表格可以让你的超级用户更快乐。
答案 1 :(得分:0)
有时使用长选项名称可能更容易,尤其是模糊名称或短选项难以获得时,有时它恰恰相反。如果您认为可能出现这种情况,您可以选择两种形式的选项,并让用户选择他喜欢的。
您想要script.py -r1000
还是script.py --repeat 1000
?我会说这都是关于品味的,如果你和很多人一起使用它,你可能会考虑他们的。
添加参数时,
-a
和--argument
之间有什么区别?
只要您在add_argument
函数中添加它们,答案就是 - -a
您可以在-a
之后粘贴值(如果有的话),不需要的空间,如第二段中的示例。没有,没有。
答案 2 :(得分:0)
试图捕捉' - ' vs' - '。
简而言之,两种参数都具有同等的能力。我不能想到你可以用一种类型而不是另一种类型做任何事情(除了用单个连字符捣碎的单个字符,通常是python程序员不能这样做。)。
-
-f filename
--
--directory /root/foobar
d
irectory和d
吃,那么请更好地提及两者的长格式选项。