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布尔参数[重复]的主要内容,如果未能解决你的问题,请参考以下文章