编写命令行脚本¶
Astropy中的命令行脚本应该遵循一致的方案,以提高可读性和兼容性。
设置工具' "entry points" 用于自动生成具有正确扩展名的包装器。这些脚本可以存在于它们自己的模块中,也可以作为实现类或函数的更大模块的一部分,以供astropy库使用。他们应该有一个 main
函数解析参数并将这些参数传递给某个库函数,以便在需要时可以编程方式使用库函数。这个 main
函数应接受包含 sys.argv
列表,脚本名称除外(例如。, argv[1:]
). 然后必须将其添加到 setup.py
文件(参见下面的示例)。
可以根据需要解析命令行选项,但是 argparse
如果可能的话,建议使用模块,因为它比旧的模块接口更简单、更灵活 optparse
.
例子¶
内容 /astropy/somepackage/somemod.py
::
def do_something(args, option=False):
for a in args:
if option:
...do something...
else:
...do something else...
def main(args=None):
import argparse
parser = argparse.ArgumentParser(description='Process some integers.')
parser.add_argument('-o', '--option', dest='op',action='store_true',
help='Some option that turns something on.')
parser.add_argument('stuff', metavar='S', nargs='+',
help='Some input I should be able to get lots of.')
res = parser.parse_args(args)
do_something(res.stuff,res.op)
然后将脚本添加到 setup.cfg
在本节中:
[options.entry_points]
console_scripts =
somescript = astropy.somepackage.somemod:main