登录
首页 >  文章 >  python教程

迈向轻松的 Python 配置文件版本 Ø

来源:dev.to

时间:2024-11-28 20:16:01 114浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《迈向轻松的 Python 配置文件版本 Ø》,很明显是关于文章的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

迈向轻松的 Python 配置文件版本 Ø

介绍

我们编写了许多需要通过外部属性进行自定义的python应用程序,或者我们希望使用非硬编码属性和/或运行时配置属性来自定义或影响行为的应用程序。 对解决方案的各种 google 搜索都会产生教程,这些教程向我们提供了代码示例,这些示例虽然实际上可以工作,但无法针对现实世界的应用程序进行适当的扩展。

这组文章记录了我在实现一个简单、可维护且易于扩展的机制来管理应用程序配置属性的过程中反复重构和重新实现的各种实现过程。

版本Ø

我发现的教程版本只是库开发人员提供的代码片段的扩展,以证明他们的实现有效。 虽然这足以提供概念证明,但这些片段在应用程序的现实世界中无法扩展。

以下代码片段就是一个示例。

import configparser

def create_config():
    config = configparser.configparser()

    # add sections and key-value pairs
    config['general'] = {
      'debug': 'true', 
      'log_level': 'info'
    }
    config['database'] = {
      'db_name': 'example_db',
      'db_host': 'localhost', 
      'db_port': '5432'
    }

    with open('config.ini', 'w') as configfile:
        config.write(configfile)


if __name__ == "__main__":
    create_config()

虽然这段代码片段确实允许我们保存我们的配置值,但它给我们留下了读取这些保存值的问题。 同样,实现开发人员片段为我们提供了有关如何检索这些值的示例代码,如以下代码片段所示。

import configparser

def read_config():
    config = configparser.ConfigParser()

    config.read('config.ini')

    # Access values from the configuration file
    debug_mode = config.getboolean('General', 'debug')
    log_level = config.get('General', 'log_level')
    db_name = config.get('Database', 'db_name')
    db_host = config.get('Database', 'db_host')
    db_port = config.get('Database', 'db_port')

    # Return a dictionary with the retrieved values
    config_values = {
        'debug_mode': debug_mode,
        'log_level': log_level,
        'db_name': db_name,
        'db_host': db_host,
        'db_port': db_port
    }

    return config_values

if __name__ == "__main__":
    # Call the function to read the configuration file
    config_data = read_config()

    # Print the retrieved values
    print('Debug Mode',       config_data['debug_mode'])
    print('Log Level',         config_data['log_level'])
    print('Database Name', config_data['db_name'])
    print('Database Host', config_data['db_host'])
    print('Database Port', config_data['db_port'])

结论

我在上面的代码中发现了很多问题。 虽然对于小脚本来说这是完全可以接受的,但代码会受到与实际 python 变量名称相关的字符串值的使用及其在大型代码库中潜在扩散的影响。 虽然使用全局常量可能会缓解这种情况,但我认为这是不可扩展的,因为它不遵循 andrew hunt 和 david thomas 在他们的开创性著作《实用程序员》中所倡导的基本软件设计原则,并且未能通过 dry原则,又名“不要重复自己”。

本文的源代码在这里。

请参阅我的下一篇文章,其中记录了解决我概述的一些问题的初步实现。

到这里,我们也就讲完了《迈向轻松的 Python 配置文件版本 Ø》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>