Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何根据参数的存在更改argparse选项操作与类型行为?_Python_Argparse - Fatal编程技术网

Python 如何根据参数的存在更改argparse选项操作与类型行为?

Python 如何根据参数的存在更改argparse选项操作与类型行为?,python,argparse,Python,Argparse,我正在尝试为Python脚本的CLI实现以下行为: 如果-o选项不存在,则脚本不会写入文件 如果-o选项不带参数,脚本将写入默认文件名 如果-o选项带有参数,脚本将写入用户提供的文件名 是否可以通过argparse实现这一点?以下是我在构建解析器时尝试的内容: parser.add_argument('-o', '--output', action='store_true', type=str, default=False, required=False, help="...") 我了解到

我正在尝试为Python脚本的CLI实现以下行为:

  • 如果
    -o
    选项不存在,则脚本不会写入文件
  • 如果
    -o
    选项不带参数,脚本将写入默认文件名
  • 如果
    -o
    选项带有参数,脚本将写入用户提供的文件名
是否可以通过
argparse
实现这一点?以下是我在构建解析器时尝试的内容:

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

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

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

阅读更多信息:

Nice:我不知道除了
store\u const
append\u const
操作之外,还使用了
const
parser.add_argument('-o', '--output', const='default.txt', nargs='?', type=str, default=False, required=False, help="...")