当前位置: 首页 > wzjs >正文

一个网站服务器多少钱网站开发的技术分类

一个网站服务器多少钱,网站开发的技术分类,百度搜索广告投放,河北高端网站设计目录 一、快速安装 二、模块简介 三、INI文件格式 四、基础用法 1 创建配置文件 2 读取配置文件 3 访问配置项 4 常用方法 五、高级功能 1 数据类型处理 2 默认值与回退 3 插值功能 4 自定义解析器 六、错误处理 七、最佳实践 八、完整示例 九、 注意事项 十、…

目录

 一、快速安装

二、模块简介

三、INI文件格式

四、基础用法

1 创建配置文件

2 读取配置文件

3 访问配置项

4 常用方法

五、高级功能

1 数据类型处理

2 默认值与回退

3 插值功能

4 自定义解析器

六、错误处理

七、最佳实践

八、完整示例

九、 注意事项

十、总结


 🚀 个人主页:xmp65535

🚀 专栏:python技术专栏


configparser 是 Python 标准库中用于处理 INI 格式配置文件 的模块。它可以帮助你轻松读取、修改和生成配置文件,适用于保存程序设置、数据库连接信息等场景。


 一、快速安装

configparser 是 Python 内置模块,无需额外安装,直接导入即可:

import configparser

二、模块简介

configparser 是Python标准库中用于处理INI格式配置文件的模块,支持:

  • 多级配置节(Section)

  • 类型自动转换

  • 插值表达式

  • 注释处理

  • 配置项验证

import configparser
print(configparser.__version__)  # 输出模块版本

三、INI文件格式

典型结构示例:

[DEFAULT]
server_ip = 127.0.0.1
port = 8080[database]
; MySQL配置
host = localhost
user = admin
password = secret
timeout = 5.5
ssl_enabled = true[logging]
level = INFO
handlers = console, file

四、基础用法

1 创建配置文件

config = configparser.ConfigParser()# 创建DEFAULT节(特殊节)
config['DEFAULT'] = {'debug': 'False','max_retries': '3'
}# 添加新节
config['database'] = {'host': 'localhost','port': '3306'
}# 单独添加配置项
config['webapp'] = {}
config['webapp']['thread_pool'] = '10'# 写入文件
with open('app_config.ini', 'w') as f:config.write(f)

生成文件内容:

[DEFAULT]
debug = False
max_retries = 3[database]
host = localhost
port = 3306[webapp]
thread_pool = 10

2 读取配置文件

config = configparser.ConfigParser()# 读取单个文件
config.read('app_config.ini')# 读取多个文件
found_files = config.read(['app_config.ini', 'override.ini'])
print("成功加载的文件:", found_files)# 安全加载(文件不存在不报错)
try:config.read('nonexistent.ini', encoding='utf-8')
except FileNotFoundError:print("文件不存在")

3 访问配置项

# 检查节是否存在
print('database' in config)  # True# 获取所有节(排除DEFAULT)
sections = config.sections()
print(sections)  # ['database', 'webapp']# 获取配置项
print(config['database']['host'])  # localhost# 安全获取(带默认值)
timeout = config.get('database', 'timeout', fallback='10')
print(timeout)  # 使用DEFAULT节的timeout或返回10# 获取所有键值对
for key in config['database']:print(f"{key} = {config['database'][key]}")

4 常用方法

方法作用示例
sections()获取所有 Section 名称config.sections()
options(section)获取某个 Section 的所有键名config.options('DATABASE')
get(section, key)获取字符串类型的值config.get('DATABASE', 'host')
getint(section, key)获取整型值(自动转换)config.getint('DATABASE', 'port')
getfloat(section, key)获取浮点型值config.getfloat(...)
getboolean(section, key)获取布尔值(支持 yes/notrue/falseconfig.getboolean(...)
add_section(section)添加新 Sectionconfig.add_section('NEW_SECTION')
remove_section(section)删除 Sectionconfig.remove_section(...)
set(section, key, value)修改或新增键值对config.set('DATABASE', 'host', '192.168.1.1')

五、高级功能

1 数据类型处理

# 自动类型转换
config['DEFAULT']['max_retries'] = '3'
config['DEFAULT']['ratio'] = '0.85'
config['DEFAULT']['ssl_enabled'] = 'true'print(config.getint('DEFAULT', 'max_retries'))  # 3
print(config.getfloat('DEFAULT', 'ratio'))     # 0.85
print(config.getboolean('DEFAULT', 'ssl_enabled'))  # True# 自定义转换器
def parse_size(value):units = {"KB": 1024, "MB": 1024**2, "GB": 1024**3}number, unit = value.split()return int(float(number) * units[unit])config['storage'] = {'max_size': '2.5 GB'}
size = parse_size(config['storage']['max_size'])
print(size)  # 2684354560

2 默认值与回退

# 全局默认值
config = configparser.ConfigParser(defaults={'loglevel': 'WARNING','retries': '3'
})# 节内默认值
config['DEFAULT']['timeout'] = '30'# 多层回退
value = config.get('api', 'timeout', fallback=config['DEFAULT']['timeout'])

3 插值功能

config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())config['DEFAULT'] = {'home_dir': '/var/app','data_dir': '%(home_dir)s/data'
}config['paths'] = {'log_dir': '${home_dir}/logs','temp_dir': '${paths:log_dir}/temp'
}print(config['paths']['temp_dir'])  # /var/app/logs/temp

4 自定义解析器

class MyConfigParser(configparser.ConfigParser):def optionxform(self, optionstr):"""保持键的大小写敏感"""return optionstrdef _validate(self, section, option, value):"""自定义验证逻辑"""if option == 'port' and not (0 < int(value) <= 65535):raise ValueError("Invalid port number")super()._validate(section, option, value)custom_parser = MyConfigParser()

六、错误处理

try:print(config['nonexistent_section']['option'])
except configparser.NoSectionError:print("配置节不存在!")try:value = config.get('database', 'invalid_option')
except configparser.NoOptionError:print("配置项不存在!")# 安全访问方法
value = config.get('database', 'invalid_option', fallback='default_value')

七、最佳实践

  1. 配置组织规范

    # ini文件[production]
    ; 继承DEFAULT并覆盖
    database.host = db.prod.example.com[staging:production]
    ; 继承production配置
    database.host = db.stage.example.com
  2. 敏感信息处理

    # 从环境变量读取密码
    import os
    config['database']['password'] = os.getenv('DB_PASSWORD')
  3. 配置版本控制

    # ini[metadata]
    config_version = 1.2
     

    八、完整示例

    import configparser# 初始化配置
    config = configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())# 创建默认配置
    defaults = {'threads': '4','log_level': 'INFO'
    }
    config.read_dict({'DEFAULT': defaults})# 读取多个配置文件
    config.read(['base_config.ini', 'override.ini'])# 访问配置
    try:db_config = {'host': config['database']['host'],'port': config.getint('database', 'port'),'user': config['database']['user'],'password': config['database']['password']}
    except configparser.Error as e:print(f"配置错误: {e}")exit(1)# 动态更新配置
    if config.getboolean('debug', 'enabled'):config['DEFAULT']['log_level'] = 'DEBUG'# 保存用户自定义配置
    user_config = configparser.ConfigParser()
    user_config['user_prefs'] = {'theme': 'dark','notifications': 'yes'
    }
    with open('user.ini', 'w') as f:user_config.write(f)

    九、 注意事项

    1. 文件路径问题
      确保配置文件路径正确(建议使用绝对路径或检查当前工作目录)。

    2. 键值不存在时的处理
      使用 get() 方法时,如果键不存在会抛出 NoOptionError。可以通过以下方式避免:

      # 提供默认值
      timeout = config.get('DATABASE', 'timeout', fallback=30)
    3. 大小写敏感
      默认情况下键名是 不区分大小写 的(全部转为小写)。如需保留大小写,初始化时设置:

      config = configparser.ConfigParser(allow_no_value=True, strict=True)
    4. 注释和空行
      INI 文件支持以 # 或 ; 开头的注释,空行会被自动忽略。

    十、总结

    • 适用场景:中小型项目的配置管理,需要人类可读的简单配置文件。

    • 替代方案:复杂场景可考虑 JSON/YAML 格式(使用 json 或 pyyaml 模块)。

    • 优势:简单易用,无需第三方依赖,兼容 INI 标准格式。

    通过 configparser,你可以轻松实现配置与代码分离,让程序更灵活、更易维护!

    http://www.dtcms.com/wzjs/798892.html

    相关文章:

  1. 这几年做啥网站致富phpwind wordpress
  2. 做网站找什么公司怎么开通自己的微信公众号
  3. 淄博网站建设推广优化优化设计五年级下册语文答案
  4. 旅游网站建设目标网站分类云南省建设工作网站
  5. 手机网站淘宝客wordpress和wiki
  6. 宁波网站关键词推广如何给网站做app
  7. 化妆品做的不好的网站徐州建设网站公司
  8. 做餐饮类网站用哪个程序温州乐清哪里有网络公司
  9. 腾讯云建站和平苏州网站建设
  10. 企业信息公开网站c sql网站开发
  11. 池州网站建设网站建设益阳网站建设公司有哪些
  12. 新手如何给自己的网站做优化整站排名优化教程
  13. 小松 建设项目 网站设计工作室logo创意
  14. wordpress登陆口网站搜索引擎优化公司
  15. 网站开发 哪些技术配置外网访问WordPress
  16. 网站首页代码在工商局网站做年报要交费吗
  17. 优秀专题网站wordpress谷歌慢
  18. 保定网站建设方案阿里云 cdn wordpress
  19. 北京外贸网站建设价格表白二维码生成器
  20. 汕头潮南网站建设商洛网站建设哪家好
  21. 给网站做推广郑州网站制作电话
  22. 做问卷调查赚钱好的21个网站申请个网站要多少钱
  23. 5000多一年的网站建站宿松住房和城乡建设局网站
  24. 做推广的网站名称计算机科学与技术网站
  25. 网站调用微信数据重庆在线开放课程
  26. 优质高等职业院校建设网站掏宝网网站建设评价表
  27. 福田区做网站公司特效很好的网站
  28. 长春网站制作价格网站关键词优化排名怎么做
  29. 优秀网站设计案例分析ppt建设一个电商网站需要多少钱
  30. 上海网站制作价格国家企业信用信息公示系统换官网