繁体   English   中英

接受用户永久输入的最佳方式?

[英]Best way to accept permanent input from a user?

我有一个脚本,它有一个必须由用户设置的全局变量,而且所有变量都是一个包含路径名的字符串,每次脚本运行时都需要它。 我不想每次都提示用户输入此路径名。

目前,我正在考虑要求用户永久设置环境变量,方法是将其添加到/etc/profile.bash_profile ,并使用sys.environ字典访问它。 另一个选择是有一个配置文件并要求用户编辑相关的行,然后使用configparser来读取它。

这样做有推荐的方法吗?

在Python 3中使用Python ConfigParser模块或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 ),允许您的用户指定路径,并让您的脚本使用路径自动编写自己的配置文件。 现在,您的用户永远不必手动触摸配置文件,也不必再次在命令行上添加路径。 更好的是,如果路径发生变化,您的用户可以再次使用命令行路径选项运行它,瞧,配置文件中的旧路径将被覆盖并保存新路径。

由于其灵活性和用户友好性,我肯定会推荐配置文件方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM