python:通过命令行进行argparse布尔参数[重复]

Posted

技术标签:

【中文标题】python:通过命令行进行argparse布尔参数[重复]【英文标题】:python : argparse boolean arguments via command line [duplicate] 【发布时间】:2018-11-04 05:30:57 【问题描述】:

我想将参数传递给这个sampleCode.py 文件。

import argparse
parser = argparse.ArgumentParser()
parser.add_argument('--num_epochs', '-n', default=2, type=int)
parser.add_argument('--directory', default='/some/string/')
parser.add_argument('--exclude_hydro', default=False, action='store_true')

args = parser.parse_args()
print(args.num_epochs)    # 2
print(args.exclude_hydro) # False

以下命令适用于 int 和 string 参数,但不适用于 boolean。

$python3 sampleCode.py -n3                      #args.num_epochs=3
$python3 sampleCode.py --num_epochs 3           #args.num_epochs=3
$python3 sampleCode.py --directory /new/string  #args.directory = /new/string
$python3 sampleCode.py --exclude_hydro True     #error

如何传入布尔参数?我尝试将type=bool 作为.add_argument() 的参数,但这不起作用。

【问题讨论】:

看起来像 dup:***.com/questions/15008758/… bool('False') 产生什么? 【参考方案1】:

parser.add_argument('--exclude-hydro', const=True) 应该可以工作。

请注意,您还应该定义help="<help_text>",这样当用户在没有任何参数的情况下调用应用程序时,会显示帮助文本来描述每个参数的用途:

parser.add_argument('--exclude-hydro', const=True, help="<help_text>")

【讨论】:

const 不被接受为参数,除非nargs='?'action='store_const'。在这两种情况下,您还需要default

以上是关于python:通过命令行进行argparse布尔参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

python内置库--argparse

为啥 argparse 不能正确解析我的布尔标志? [复制]

Python argparse库简单入门

Python Argparse Moudle

Python命令行解析库argparse(转)

python使用argparse解析命令行参数