如何基于参数存在更改argparse选项操作与类型行为?

时间:2019-09-19 19:03:58

标签: python argparse

我正在为我的Python脚本的CLI实施以下行为:

  • 如果没有-o选项,则脚本不会写入文件
  • 如果存在-o选项而不带参数,则脚本将写入默认文件名
  • 如果-o选项带有参数,则脚本将写入用户提供的文件名
$ python myscript.py               # does not write to file
$ python myscript.py -o            # writes to default.txt
$ python myscript.py -o myfile.txt # writes to myfile.txt

是否可以使用argparse来实现?这是我在构建解析器时尝试过的方法:

parser.add_argument('-o', '--output', action='store_true', type=str, default=False, required=False, help="...")

1 个答案:

答案 0 :(得分:1)

我了解到这是可能的,但是您需要使用constnargs选项。

parser.add_argument('-o', '--output', const='default.txt', nargs='?', type=str, default=False, required=False, help="...")

了解更多:const nargs