我是一个Python新手。我想对处理程序参数的建议是在一个文件中的json格式。目前,我正在做如下所示的事情,然而,它似乎过于冗长,并且多次输入同一个字符串(有时用破折号,有时用下划线)的想法似乎是幼稚的-容易出错的-糟糕的。。。:—)(我还有很多参数!)在
#!/usr/bin/env python
import sys
import os
import json ## for control file parsing
# control parameters
mpi_nodes = 1
cluster_size = None
initial_cutoff = None
# ...
#process the arguments
if len(sys.argv) != 2:
raise Exception(
"""Usage:
run_foo <controls.json>
Where:
<control.json> is a dictionary of run parameters
"""
)
# We expect a .json file with our parameters
controlsFileName = sys.argv[1]
err = ""
err += "" #validateFileArgument(controlsFileName, exists=True)
# read in the control parameters from the .json file
try:
controls = json.load(open(controlsFileName, "r"))
except:
err += "Could not process the file '" + controlsFileName + "'!\n"
# check each control parameter. The first one is optional
if "mpi-nodes" in controls:
mpi_nodes = controls["mpi-nodes"]
else:
mpi_nodes = controls["mpi-nodes"] = 1
if "cluster-size" in controls:
cluster_size = controls["cluster-size"]
else:
err += "Missing control definition for \"cluster-size\".\n"
if "initial-cutoff" in controls:
initial_cutoff = controls["initial-cutoff"]
else:
err += "Missing control definition for \"initial-cutoff\".\n"
# ...
# Quit if any of these things were not true
if len(err) > 0:
print err
exit()
#...
这是可行的,但似乎有更好的方法。我被要求使用json文件和使用连字符的参数名。有什么想法吗?在
我在找更具静态绑定的东西。也许这是最好的。在
通常,我们会这样做。在
A end
params['mpi_nodes']
的值为mpi\u nodes如果你想要一个简单的变量,你可以这样做。
mpi_nodes = params['mpi_nodes']
如果您需要namedtuple,请将
^{pr2}$get_parameters
更改为我不知道你会不会觉得更好。在
argparse库很不错,它可以为您处理大部分参数解析和验证,以及打印漂亮的帮助屏幕
[1]http://docs.python.org/dev/library/argparse.html
我将制作一个快速演示,展示你如何使用它这个阿沃。在
假设您有更多的参数要处理,类似这样的方法可能会起作用:
您也可以使其更显式,而不是操纵全局变量:
^{pr2}$相关问题 更多 >
编程相关推荐