python - 如何查看 argparse.NameSpace Python 对象的属性?
问题描述
对于涉及多个脚本(数据处理、模型调整、模型训练、测试等)的项目,我可以将所有<class 'argparse.ArgumentParser'>
对象作为我命名的模块中每个脚本任务的函数的返回值cli.py
。但是,在调用脚本本身 ( __main__
) 中,在调用 之后args = parser.parse_args()
,如果我输入args.
VS Code,我不会得到特定于该对象的建议属性。如何argparse.NameSpace
在 VS Code 中获取对象的建议属性?
例如,
"""Module for command line interface for different scripts."""
import argparse
def some_task_parser(description: str) -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(description=description)
parser.add_argument('some_arg')
return parser
然后
"""Script for executing some task."""
from cli import some_task_parser
if __name__ == '__main__':
parser = some_task_parser('arbitrary task')
args = parser.parse_args()
print(args.) # I WANT SUGGESTED ATTRIBUTES (SUCH AS args.some_arg) TO POP UP!!
解决方案
我不了解 VSCode,在ipython
会话中,选项卡完成确实显示Namespace
. argparse.Namespace
是一个比较简单的对象类。我认为你想要的只是attributes
这个对象的。
In [238]: args = argparse.Namespace(test='one', foo='three', bar=3)
In [239]: args
Out[239]: Namespace(bar=3, foo='three', test='one')
In [240]: args.
bar test
foo args.txt
但是这些属性在开发过程中将不可用。它们在运行时通过解析操作放在那里。它们不能从parser
设置中可靠地推断出来。当然argparse
不提供这样的帮助。
我经常建议开发人员包括一个
print(args)
在调试阶段,他们可以清楚地了解解析器的作用。
推荐阅读
- go - cmd.ExtraFiles 尝试通过管道传输时失败
- c# - 如何创建与 SQL 服务器链接并具有审批功能的 windows 窗体应用程序 (.exe) (PDF/PNG, 冲压审批)
- kubernetes - 在不重新启动 Pod 的情况下更改 Pod 优先级?
- spring-boot - 从不同的 Spring Boot 项目连接到嵌入式 ActiveMQ
- c - 具有 2d 数组问题的 C 游戏板
- python-3.x - 气流 1.10:sqlalchemy.orm.exc.NoResultFound:没有找到一个()的行
- python - 即使存在 R 依赖项也找不到
- traefik - Kubernetes入口中基于Traefik路径的路由无法按预期工作
- unity3d - 如何在unity2d中获得碰撞的碰撞?这段代码有什么问题?
- java - 如何模拟重新启动应用程序而不实际退出它