首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:将设置存储在字典和argparse.Namespace中

Python:将设置存储在字典和argparse.Namespace中
EN

Stack Overflow用户
提问于 2015-01-10 01:07:17
回答 2查看 1K关注 0票数 1

我正在做一些科学模拟的工作,用Python编写。我继承了密码。sim有几个参数(~15-20),这些参数可以随运行而变化--大多数是数值变量,外加一些布尔标志。主要Python脚本将这些参数作为命令行args,并使用argparse将它们存储在argparse.Namespace对象中。

实际上,参数值不是在命令行上输入,而是存储在shell脚本中,以便于重用。除了使用相关的命令行args运行Python脚本之外,这些脚本没有真正的用途。

我想将参数集存储在人类可读的(特别是科学家可读的)和parsable配置文件中,并且完全不用shell脚本和argparse。这样做的结果是,我将把参数存储在字典中,而不是Namespace中。

在字典中存储设置有什么坏处吗?除了params.spamparams['spam']略简洁之外

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-10 01:11:28

dictargparse最终用于托管其Namespace的工具,因此,直接使用Namespace没有问题。

模块ConfigParserhttps://docs.python.org/2/library/configparser.html,将解析一个相当正常的配置文件,并将设置存储在其中。然而,它是按章节排列的。若要提取单个区段'foo',给定填充的配置解析器对象cp

代码语言:javascript
运行
复制
adict = dict(cp.items('foo'))

会起作用的。

为了更容易地访问语法,您可以使用http://code.activestate.com/recipes/52308-the-simple-but-handy-collector-of-a-bunch-of-named/ (一个老的但是goldie:-).

票数 4
EN

Stack Overflow用户

发布于 2015-01-10 01:45:33

Ipython集成了配置文件和命令行值。有默认配置文件和用户配置文件。argparse参数是从配置文件中创建的。因此,在多个级别上设置和修改值。我必须深入研究代码才能确定,但我认为值最终存储在config生成的结构中,而不是argparse.Namespace

在内部,argparse使用getattrsetattr访问名称空间。允许设置属性名称的最大自由。Namespace类就像它们来的一样简单,有一些比较和显示的方法。

命名空间值可以通过以下简单语句添加到字典中:

代码语言:javascript
运行
复制
d.update(vars(p.parse_args()))

我会考虑使用argparse.SUPPRESS将默认值保留在名称空间之外,从而防止它们更改字典中已经存在的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27871769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档