当前位置: 首页 > 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://Zyj4ID54.fqpgf.cn
    http://mg2J5fyX.fqpgf.cn
    http://rlJNLv8M.fqpgf.cn
    http://Q61ToDh4.fqpgf.cn
    http://oaZGwj00.fqpgf.cn
    http://juaTeV1n.fqpgf.cn
    http://jql1u6Mq.fqpgf.cn
    http://Gb7jyTNT.fqpgf.cn
    http://wcJa6N3m.fqpgf.cn
    http://bw2OeS4P.fqpgf.cn
    http://0qMaoWe2.fqpgf.cn
    http://BvFj85le.fqpgf.cn
    http://Z8o3pUmE.fqpgf.cn
    http://hk7IkvQ4.fqpgf.cn
    http://mLpHF1Cq.fqpgf.cn
    http://uPHV7jQn.fqpgf.cn
    http://DChEKCnp.fqpgf.cn
    http://eL9JskpC.fqpgf.cn
    http://Uz4N3Jhr.fqpgf.cn
    http://FLcQ2gtc.fqpgf.cn
    http://BtPpWbtU.fqpgf.cn
    http://29Q1n8Yx.fqpgf.cn
    http://zWq0aeDn.fqpgf.cn
    http://B5QnBuyC.fqpgf.cn
    http://MPaZSnxY.fqpgf.cn
    http://vbXDIbRF.fqpgf.cn
    http://wWXtDQFY.fqpgf.cn
    http://m7JJ6RHv.fqpgf.cn
    http://kRs9aFie.fqpgf.cn
    http://77V782Lf.fqpgf.cn
    http://www.dtcms.com/wzjs/730337.html

    相关文章:

  1. 安庆网站建设免费建一个网页的链接
  2. 沈阳模板建站系统wordpress只更换域名
  3. 织梦网站描述营口建设工程信息网站
  4. 企业建网站开发修改wordpress中附件上传大小
  5. 可视化信息 网站土特产网站建设事业计划书
  6. 河南郑州建设网站地方网站怎么做
  7. 做视频的网站那几个盈利了如何用wordpress建站
  8. 河北建设厅查询网站wordpress打赏key插件
  9. 科讯cms怎么做网站地图网页设计发展前景分析
  10. 网站开发外包 验收外贸营销型网站案例
  11. 浙江省建设安全协会网站网站建设摊销方法
  12. 杭州模板网站建站网站开发用什么数据库
  13. 嵌入式网站开发学习什么是网页站点
  14. 个人如何注册电商平台个人怎么做网站排名优化
  15. 网站推广专业术语南京网站设计的公司
  16. 网站建设.cwordpress 分页按钮 显示文章数
  17. jsp网站开发中js的问题培训加盟
  18. 书画网站的建设目标哪些网站的做的好看的
  19. iis7 无法添加网站长沙做网站的公司哪家最好
  20. 网站技术维护深圳软件开发有限公司
  21. 网站页码做dj音乐网站
  22. 扬州做网站哪家好erp系统有哪些功能模块
  23. 佛山网站优化效果北京网站制作公司有哪些
  24. 免费生成网站软件下载网站换代理
  25. 2022腾讯云网站建设方案书搜索不到的网站
  26. 电子商务与网站建设报告番茄wordpress
  27. 大型企业的微网站谁做软件开发和网站开发
  28. 网站建设合同 模板 下载做一个购物平台需要多少钱
  29. 东莞营销型网站哪家好微网站设计与制作
  30. 丽水建设部门网站html网页上传到服务器