我正在使用sys.argv
解析Python项目中的系统参数。在写了解析系统参数的逻辑之后,我不得不在某个时候修改脚本。我添加了一行,基本上在sys.argv
后面附加了一个字符串,因此解析该字符串的逻辑不会更改-
sys.argv.append('some string here')
在为程序创建系统参数之后修改系统参数是一种不好的做法吗?
答案 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