Python 附加到系统参数 - 不好的做法?
Python append to system arguments - bad practice?
我正在使用 sys.argv
解析我的 Python 项目中的系统参数。在某些时候,我不得不在编写了解析系统参数的逻辑后修改脚本。我添加了一行,基本上将一个字符串附加到 sys.argv
所以解析它的逻辑不会改变 -
sys.argv.append('some string here')
在为程序创建系统参数后修改系统参数是一种不好的做法吗?
在 Python 中修改 sys.argv
是不好的做法,这在其他语言中是等效的。
在这些情况下,我建议使用 parsed_args
变量,其中包含来自 sys.argv
的所有已解析数据、您要设置的任何默认值以及 "middleware" 会进行的任何修改使.
在我看来,在这种情况下,最好先使用 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
我正在使用 sys.argv
解析我的 Python 项目中的系统参数。在某些时候,我不得不在编写了解析系统参数的逻辑后修改脚本。我添加了一行,基本上将一个字符串附加到 sys.argv
所以解析它的逻辑不会改变 -
sys.argv.append('some string here')
在为程序创建系统参数后修改系统参数是一种不好的做法吗?
在 Python 中修改 sys.argv
是不好的做法,这在其他语言中是等效的。
在这些情况下,我建议使用 parsed_args
变量,其中包含来自 sys.argv
的所有已解析数据、您要设置的任何默认值以及 "middleware" 会进行的任何修改使.
在我看来,在这种情况下,最好先使用 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