在Python中解析参数的最佳实践是什么?

时间:2017-11-24 15:59:27

标签: python argparse

由于我没有丰富的Python经验,我总是试图遵循Google Python Style Guide。该指南包含以下句子。

"即使是用作脚本的文件也应该是可导入的,仅仅导入不应该具有执行脚本主要功能的副作用。"

因此,我搜索了一种覆盖__getattr__的方法,并且一直使用this ArrtDict class进行参数解析,如下所示。

import argparse

class AttrDict(dict):
    def __init__(self, *args, **kwargs):
        super(AttrDict, self).__init__(*args, **kwargs)
        self.__dict__ = self

def parse_args(args):
    if isinstance(args, list):
        parser = argparse.ArgumentParser()
        parser.add_argument('--args1')
        return parser.parse_args(args)
    else:
        return AttrDict(args)

def main(args):
    args = parse_args(args)

if __name__ == '__main__':
    import sys
    main(sys.argv[1:])

在Python中进行参数解析的最佳实践是什么?

1 个答案:

答案 0 :(得分:1)

你所指的句子是你应该在你的脚本文件中包含这一行:

if __name__ == '__main__':

并且运行该脚本的任何代码都应该出现在该块中。通过这样做,您可以确保在从其他文件导入代码时,代码不会自动运行,因为导入会忽略上面提到的if语句。

对于处理参数(应该存在于上面提到的if块中,因为在导入时你不想这样做),你应该在Python 2.7之后使用argparse。这是文档的链接:

Python argparse library

您不必覆盖__getattr__