Python附加到系统参数-不良做法?

时间:2018-07-23 06:37:34

标签: python command-line-arguments

我正在使用sys.argv解析Python项目中的系统参数。在写了解析系统参数的逻辑之后,我不得不在某个时候修改脚本。我添加了一行,基本上在sys.argv后面附加了一个字符串,因此解析该字符串的逻辑不会更改-

sys.argv.append('some string here')

在为程序创建系统参数之后修改系统参数是一种不好的做法吗?

2 个答案:

答案 0 :(得分:2)

不好的做法是在Python中修改sys.argv,在其他语言中也是如此。

在这种情况下,我建议您使用一个parsed_args变量,该变量包含您从sys.argv解析的所有数据,您想要设置的任何默认值以及“中间件”将进行的任何修改。

答案 1 :(得分:1)

我认为在这种情况下,最好先使用argparse解析这些参数。

这样,您可以获得Namespace对象,该对象可以进行修改,并且比硬编码sys.argv更容易维护。

之后,您可以根据需要修改Namespace

小例子:

def parse_args():
    parser = argparse.ArgumentParser(description="Description")
    parser.add_argument('--file_path')
    parsed_args = parser.parse_args()
    return parsed_args

if __name__ == '__main__':
    args = parse_args()
    print(args.file_path) # the argument passed while running script
    args.another_value = "value"
    print(args.another_value) # value added within code
    setattr(args, 'yet_another', 'value') # another way to set attributes