gpt4 book ai didi

Python 参数解析 : args has no attribute func

转载 作者:太空狗 更新时间:2023-10-30 00:04:57 25 4
gpt4 key购买 nike

简介

我是学校项目的麻烦。我正在制作一个测试服,我需要一个配置生成界面和一个测试运行器。为此,我使用了库 argparse 和两个子解析器 cgirun

问题本身

所以这是失败的代码部分:

def CGI(args):
print("CGI: Work In Progress")
exit(0)


def runTest(args):
print("Run: Work in Progress")
exit(0)

parser = argparse.ArgumentParser()
subparser = parser.add_subparsers()
cgi = subparser.add_parser("cgi", help="CSV Generator Interface")
run = subparser.add_parser("run", help="Test running")
verbosity = parser.add_argument_group("Verbosity").add_mutually_exclusive_group()
check = run.add_argument_group("Checks")

# Arguments
#Run parser
run.set_defaults(func=runTest)

# Run argument declaration ...

# Verbosity argument declaration ...

# Check argument declaration ...

#CGI
cgi.set_defaults(func=CGI)

args = parser.parse_args()
args.func(args) # Error is here

每当我运行这段代码时,我都会遇到以下错误:

  File "/home/thor/Projects/EPITA/TC/test/test.py", line 44, in main
args.func(args)
AttributeError: 'Namespace' object has no attribute 'func'

Python 版本

$ python -V
Python 3.6.4

Argparse 版本

$ pip show argparse
Name: argparse
Version: 1.4.0
Summary: Python command-line parsing library
Home-page: https://github.com/ThomasWaldmann/argparse/
Author: Thomas Waldmann
Author-email: tw@waldmann-edv.de
License: Python Software Foundation License
Location: /usr/lib/python3.6/site-packages
Requires:

编辑

如果我手动安装 argparse,它可以sudo pip install argparse。但是有没有任何本地解决方案。我不确定它是否适用于学校的计算机(我们无法安装软件包)

编辑2

好吧,我的错,我一直是个白痴,我没有重写我的运行脚本,所以我忘了输入 runcgi

感谢您阅读我的消息以及您 future 的帮助:)

最佳答案

这是 Python 3 版本的 argparse (https://bugs.python.org/issue16308) 中的一个已知错误。在 Python 2 中,如果调用脚本时没有任何参数(即没有子命令),它会干净地退出并显示“错误:参数太少”。然而,在 Python3 中,您会得到一个未处理的 AttributeError。幸运的是,解决方法非常简单:

    try:
func = args.func
except AttributeError:
parser.error("too few arguments")
func(args)

关于Python 参数解析 : args has no attribute func,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48648036/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com