我有一个脚本,它有一个必须由用户设置的全局变量,而且所有变量都是一个包含路径名的字符串,每次脚本运行时都需要它。我不想每次都提示用户输入此路径名。
目前,我正在考虑要求用户永久设置环境变量,方法是将其添加到/etc/profile
或.bash_profile
,然后使用sys.environ
字典访问它。另一种选择是拥有配置文件并要求用户编辑相关行,然后使用configparser
进行阅读。
是否有建议的方法来执行此操作?
答案 0 :(得分:3)
使用Python ConfigParser模块或Python 3中的configparser。
它遵循标准* .ini格式,允许您以易于阅读的格式将信息从一个运行存储到下一个运行。格式本质上是自我记录的,因为您可以在文件中命名密钥,也可以在配置文件中添加注释。
它还为环境变量方法提供了更大的灵活性,因为它更容易修改配置文件,并且无论平台或其他环境设置如何,都可以轻松地将文件与脚本一起传递到下一个计算机。
您的用例正是配置文件的用途,您只需使用少量代码即可完成任务:
cfg_parser = ConfigParser.ConfigParser() # Python 2.x
if cfg_parser.read('config_file_name.ini'):
path = cfg_parser.get('SECTION_NAME', 'path')
else:
print("No config file found")
这为您提供了路径,您要求用户做的就是编辑文本文件的一行,而不是进行任何系统更改。
此外,这为您在未来扩展提供了很大的空间。如果您希望在脚本中添加更多选项,则修改配置文件要比提出新的环境变量容易得多。
最后,ConfigParser库允许您以编程方式编辑配置文件。您可以添加一个命令行选项(可能带有argparse),允许您的用户指定路径,并让您的脚本使用路径自动编写自己的配置文件。现在,您的用户永远不必手动触摸配置文件,也不必再次在命令行上添加路径。更好的是,如果路径发生变化,您的用户可以再次使用命令行路径选项运行它,瞧,配置文件中的旧路径将被覆盖,新的路径将被保存。
由于其灵活性和用户友好性,我肯定会推荐配置文件方法。