【发布时间】:2019-11-25 08:01:13
【问题描述】:
当我运行以下代码时:
def read_args():
parser = default_parser()
parser.add_argument('--tensorboard-dir', type=str, default='/tmp/cifar10/tensorboard')
parser.add_argument('-N', type=int, default=50000, help="Use N training examples.")
return parser.parse_args()
def main():
flags = readargs()
我有以下错误输出:
以下参数是必需的:--name
但是,当我添加 --name 参数时:
def read_args():
parser = default_parser()
parser.add_argument('--name', type=str, default='cifar10test')
parser.add_argument('--tensorboard-dir', type=str, default='/tmp/cifar10/tensorboard')
parser.add_argument('-N', type=int, default=50000, help="Use N training examples.")
return parser.parse_args()
def main():
flags = readargs()
也在制造问题。
有什么想法吗?
【问题讨论】:
-
什么是
default_parser?你到底是怎么运行这个的?最后,错误并不是说您需要定义参数name,而是在命令行调用中添加它。如果您的意思是 literaly 运行上述代码,则不会传递任何参数。更改为parser.parse_args([...])并在列表中填写您要传递的参数(所有字符串) -
该错误也显示了“用法”。这是什么?
-
错误意味着您必须以
script.py --name some_value的身份运行脚本。可能在default_parser()你有add_argument('--name', ...)。运行script.py --help以查看所有参数。 -
当您尝试添加自己的
--name参数时,错误是什么?我怀疑它抱怨了一个相互矛盾的定义。这将证实default_parser已经定义了--name的想法(根据需要)。 -
@Tomerikoo 亲爱的Tomerikoo,默认解析器方法包含大量参数变量,我没有添加它,因为我认为它可能会造成混淆。要我添加 default_parser 方法吗?
标签: python python-3.x argparse