首页 > 解决方案 > argparse 告诉我一个 store_true arg 突然需要一个参数

问题描述

我正在使用该argparse库并创建了一些布尔参数,如下所示:

import argparse 

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="Generate a batch of Line Protocol points of a specified shape")
    parser.add_argument('--loop', action='store_true', help="If True, script runs in infinit loop; used with Telegraf `execd` input plugin")

    args = parser.parse_args()

    print(args)

这已经工作了数周没有问题,现在突然间我得到了错误:

ipython3: error: argument --loop: expected one argument

标签: pythonipythonargparse

解决方案


如果您有以下文件 ( example.py):

import argparse

parser = argparse.ArgumentParser()
parser.add_argument('--loop', action='store_true', help="<help stuff")
args = parser.parse_args()
print(args)

您可以使用“普通”Python 执行它:

$ python example.py 
Namespace(loop=False)

$ python example.py --loop
Namespace(loop=True)

或使用 ipython,您需要通过以下方式将 ipython 参数与脚本参数分开--

$ ipython3 example.py -- --loop
Namespace(loop=True)

推荐阅读