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

标签 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="...")

最佳答案

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

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

了解更多:const nargs

关于python - 如何根据参数存在更改 argparse 选项操作与类型行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58017514/

相关文章:

python - 根据初始参数的值向 argparse 添加参数

python - 将 Python 算法翻译成 C++ 时遇到困难

python - 在 Ubuntu Python 2.7 中读取 os.system() 命令的输出

python - 杀死Python脚本中没有响应的exe文件

python - Django python 3 还是 2?

python - 从外部模块添加 argparse 参数

python - Windows 7 上的威夫利?

python - 参数解析 : ValueError when using --help or -h option with nargs

python - 如何检查python程序中的选项?

python - 'required' 是 python 命令中位置参数的无效参数