Python 带有argparse的可选命名参数

Python 带有argparse的可选命名参数,python,command-line,argparse,Python,Command Line,Argparse,可以通过以下三种方式之一使用我的Python程序: $ python prog.py # 1 $ python prog.py -d # 2 $ python prog.py -d FILE # 3 每一个都有不同的功能。(1) 根本不会将内容转储到文件中。(2) 将其转储到dump.log。(3) 将其转储到文件 在调用parse_args()之后,我不确定如何区分(1)和(2)。这是我的密码: parser = ArgumentParser() parser.add_argument(

可以通过以下三种方式之一使用我的Python程序:

$ python prog.py # 1
$ python prog.py -d # 2
$ python prog.py -d FILE # 3
每一个都有不同的功能。(1) 根本不会将内容转储到文件中。(2) 将其转储到
dump.log
。(3) 将其转储到
文件

在调用
parse_args()
之后,我不确定如何区分(1)和(2)。这是我的密码:

parser = ArgumentParser()
parser.add_argument(
    '-t', '--tag-dump',
    metavar='FILE',
    help="dump enriched tags to FILE (default: dump.log)",
    action='store',
    nargs='?',
    dest='etags_filename',
    default='dump.log'
)
args = parser.parse_args()

现在该怎么办?

您只需要向
解析器提供一个参数。添加参数()
。这将指定如果在命令行中未指定值的情况下使用该选项将填充的值。然后,您可以测试
args.etags\u filename
const
值(案例2)还是
默认值
'dump.log'
(案例1)。

同时定义
const
参数。您试过运行这个吗?事实上,您在标志前面有一个连字符
-t
,这表明它是可选的。示例命令行使用
-d
,但您的代码段定义了
-t
,而不是
-d
。是哪一个?看到了吗