使用文件来存储 optparse 参数
我已经使用 optparse 一段时间了,并且想添加从配置文件加载参数的功能。
到目前为止,我能想到的最好的方法是使用硬编码参数的包装批处理脚本......看起来很笨拙。
最优雅的方法是什么?
I've been using optparse for a while now, and would like to add the ability to load the arguments from a config file.
So far the best I can think of is a wrapper batch script with the arguments hardcoded... seems clunky.
What is the most elegant way to do this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我同意 S.Lott 使用配置文件的想法,但我建议使用内置的 ConfigParser(3.0中的configparser)模块来解析它,而不是自制的解决方案。
下面是一个简短的脚本,演示了 ConfigParser 和 optparse 的实际操作。
输出:
使用“
parser.py --language=French
”运行:内置帮助。
使用“
parser.py --help
”运行:配置文件:
I agree with S.Lott's idea of using a config file, but I'd recommend using the built-in ConfigParser (configparser in 3.0) module to parse it, rather than a home-brewed solution.
Here's a brief script that illustrates ConfigParser and optparse in action.
Output:
Run with "
parser.py --language=French
":Help is built in.
Run with "
parser.py --help
":The config file:
您可以使用
argparse
模块:它可能包含在 stdlib 中,请参阅 pep 389 。
You can use
argparse
module for that:It might be included in stdlib, see pep 389.
我遇到了类似的问题,但也想将配置文件指定为参数。受到 S. Lott 答案的启发,我想出了以下代码。
示例终端会话:
代码:
可以在 Github 上找到实际的实现: 默认字典,参数解析器和< a href="http://github.com/dbr/tvnamer/blob/26b0efedc89dfdd5b9bf2d68d8de54a2dd8b9590/tvnamer/main.py#L198" rel="nofollow noreferrer">主要功能
I had a similar problem, but also wanted to specific the config file as an argument. Inspired by S. Lott's answer, I came up with the following code.
Example terminal session:
Code:
A practical implementation can be found on Github: The defaults dictionary, the argument parser and the main function
这就是
set_defaults
函数的用途。 http://docs.python.org/library/optparse.html# optparse.OptionParser.set_defaults创建一个作为默认值字典的文件。
然后读取此文件,对其进行评估以将文本转换为字典,并将此字典作为
set_defaults
的参数提供。如果您确实担心
eval
,请对此文件使用 JSON(或 YAML)表示法。或者您甚至可以从中创建一个.INI
文件并使用configparser
获取默认值。或者您可以使用赋值语句和 exec 的简单列表。
配置文件。
读取配置文件。
That's what the
set_defaults
function is for. http://docs.python.org/library/optparse.html#optparse.OptionParser.set_defaultsCreate a file that's the dictionary of default values.
Then read this file, eval it to convert the text to a dictionary, and provide this dictionary as the arguments to
set_defaults
.If you're really worried about
eval
, then use JSON (or YAML) notation for this file. Or you could even make an.INI
file out of it and useconfigparser
to get your defaults.Or you can use a simple list of assignment statements and
exec
.Config File.
Reading the config file.
从文件(例如@commands)中读取相同命令行格式的参数,然后使用原始解析器来解析它们。
Read the arguments in the same commandline format from a file e.g. @commands, then use your original parser to parse them.
我最近构建了很多带有标志和选项的脚本,并且提出了此处描述的解决方案。
基本上,我实例了一个带有特殊标志的选项解析器,该标志告诉尝试从文件加载选项,因此您可以正常使用脚本从命令行指定选项或从文件提供它们(或一组)。
更新:我在 GitHub 上共享了代码
I've built a lot of scripts with flags and options lately, and I've come up with the solution described here.
Basically I instance an optionparser with a special flag that tells to try and load options from a file, so you can use normally your script specifying options from command line or provide them (or a set of them) from a file.
Update: i have shared code on GitHub