Python配置文件总结与避坑指南

Python模板字符串Template实战:3种方法生成动态XML配置文件(附避坑指南) 本文深入探讨了Python标准库中的`string.Template`模块,通过三种核心方法实战演示如何生成动态XML配置文件。文章详细对比了Template与其他字符串格式化方式的优劣,重点阐述了其安全、简单的特性,并提供了处理特殊字符、循环生成嵌套结构以及批量文件生成等进阶技巧与避坑指南,帮助开发者高效、安全地实现配置自动化。 阅读详情

关于今天的内容

最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结

Python 配置文件管理

configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好用,使用yaml、json等格式的存储,在多层级数据存储上,效率要比它高很多。但存在即合理,不是所有人都会使用yaml的格式,至于json的格式,很容易导致确实括号等问题,最终json.loads时报错…
关于命名:
python2中模块叫:ConfigParser
python3中更名为:configparser
eg:其实有时候懒得写2和3的差别,但很多公司或者团队至今还在使用python2,然后一导入报错,就说是我的内容写的有问题,心累…
先来看看它的基本使用:
我们首先的定义一个配置文件:

[DEFAULT]
path = /home/python
version = 3.6.8
	Beta1
author = Qing_Feng_Python
number = 13

[Mysql]
creator = pymysql
host = 127.0.0.1
port = 3306
user = root
password = 123
database = mysqlDB
status = off
uri = %(user)s@%(host)s:%(port)s/%(database)s
  1. 配置文件分为

    • section 使用方括号包裹的名称,区分大小写
    • option 你可以理解为变量名称,option及其对应的值,不区分大小写
  2. 配置文件中的键值对可以使用=或者:进行连接,但推荐使用=,为什么?因为=不会出现中文符号的异常问题!比如下面的报错:

    configparser.ParsingError: Source contains parsing errors: ‘config.ini’

  3. 键值对的分隔符及行首、行尾的空格会被strip()掉

  4. 关于DEFAULT,这个section几乎在每个配置文件中都会出现

    • DEFAULT不会再conf.section()中显示
    • 它类似于python的继承,默认子section都会具备DEFAULT的内容。当子section中出现与DEFAULT同名的键,会覆盖DEFAULT的原始内容
  5. key:value中value可以存在多行,比如例子中的version,但换行后的内容,切记不可定格写,不然会被认为是key,而导致报错。

  6. 配置文件中的value不管是int还是str亦或者表面看起来的列表[1,2,3]或者字典样式{“name”:“Urnaus”}都会被认为是str字符串类型。所以配置文件中,切记不要使用列表的样式,推荐使用json格式,这样可以通过json模块进行字典的转换

  7. 配置文件支持%(key)s的变量解析能力,些许的类似python…

说完了配置文件,再来说说怎么读取配置文件吧:

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/6/8 22:30
# @Software : PyCharm
# @version  :Python 3.6.8
# @File     : PythonConfig.py
import configparser

# 初始化
conf = configparser.ConfigParser()
# 读取配置文件
conf.read('config.ini', encoding='utf-8')
# 获得配置文件中的所有sections
print(conf.sections())
# section是区分大小写的,写成小写会被认为不存在
print(conf.has_section('mysql'))
# 获取section = Mysql 下的所有options,即keys
print(conf.options('Mysql'))
# option 不区分大小写,判断结果为True
print(conf.has_option('Mysql', 'DATABASE'))
# 获取section = Mysql 下的所有键值对
print(conf.items('Mysql'))
# 获取section=Mysql下host键对应的value值
# get方法通过不同类型,存在getint、getfloat、getboolean 不同的类型
# 其中getboolean 可以识别 true/false、 1/0、yes/no、 on/off
print(conf.get('Mysql', 'host'))
print(conf.getboolean('Mysql', 'status'))
print(conf.get('Mysql', 'uri'))
# 删除键值对,同样的还设有remove_section(section)就不演示了...
# conf.remove_section('Mysql')
conf.remove_option('Mysql', 'status')


# 我们添加了section为Python,并创建了tools=Pycharm
# 打印显示正常,但是配置文件中,并没有
conf.add_section('Python')
conf.set("Python", "tools", "Pycharm")
print(conf.get("Python", "tools"))
# 此时的配置保存在内存中,需要写入文件方可生效
with open("config.ini", "w+") as f:
    conf.write(f)

output:
['Mysql']

False

['creator', 'host', 'port', 'user', 'password', 'database', 'status', 'uri', 'path', 'version', 'author', 'number']

True

[('path', '/home/python'), ('version', '3.6.8\nBeta1'), ('author', 'Qing_Feng_Python'), ('number', '13'), ('creator', 'pymysql'), ('host', '127.0.0.1'), ('port', '3306'), ('user', 'root'), ('password', '123'), ('database', 'mysqlDB'), ('status', 'off'), ('uri', 'root@127.0.0.1:3306/mysqlDB')]

127.0.0.1

False

root@127.0.0.1:3306/mysqlDB

Pycharm

大家可以看到,获取option和items的时候,默认将DEFAULT中的参数也继承进去了。
最后一行的变量解析,也正常显示…
最后的写入一定要切记,很多时候只是在内存中进行了添加删除,而未进行文件写入,最终白玩一场…

关于列表的坑

在配置文件的存储时我用到了列表,类似如下方式:

index_list = [.......]

if x not  in index_list:
    index_list.append(x)
else:
	pass

一段很平常的代码,然后呢?问题让我定位了好久,直接看个例子吧:

>>> index_list = [1,2,3]
>>> 2.0 not in index_list
False

其实这种情况在python中是普遍存在的,比如字典中

default_dict ={1:1,2:2}
default_dict[1.0]=2
default_dict
{1: 2, 2: 2}

为什么?python字典的key存储时,比较哈希值来确定两个键是否相同的

hash(1)==hash(1.0)
True

对于这些坑,你必须牢记在心,不然坑你没商量…

The End

好了,今天的内容就到这里,如果觉得有帮助,记得点赞支持。欢迎大家关注我的公众号【清风Python】,
公众号内有整理好的各类福利数据供大家下载.

别再用JSON写配置了!YAML保姆级教程,看完直接上手(语法+案例+Python代码,一文通透) 🐍 想让配置文件告别繁琐符号?这份 YAML 指南超实用!从基础语法到 Python 实操,用简洁例子讲清列表、字典等用法,还附避坑技巧,让你轻松上手这种 "像写笔记" 的数据格式~ 阅读详情

相关推荐

EMC案例:解决千兆网口RTL8211F EMI问题

摘要:本文分析了Amlogic S812平台OEM项目中RTL8211F-CG千兆网卡EMI辐射超标问题。发现百兆测试时25MHz时钟有3dB余量,但千兆125MHz时钟导致超标。问题根源包括:未关闭PHY芯片悬空CLKOUT引脚、TX/RXCLK端RC位置错误、包地不完整及参考地缺失。解决方案涉及软件关闭无用时钟、优化RC布局、加强包地与打孔、调整共模电感位置,并在HDMI 3.3V加磁珠。关键结论指出千兆网125MHz时钟需严格包地打孔,且RC取值需平衡EMI与通信性能。

电子绿洲的博客 1279

解决configparser模块读取配置文件报ParsingError: Source contains parsing errors错误

如何使用Python ConfigParser模块解析在INI文件中没有值的标签,而不会出现Error value

sunny 4729

【扫地机器人】详细介绍扫地机器人软硬件测试和场景化测试

本文提出2025版扫地机器人全生命周期测试方案,涵盖实验室仿真、硬件台架、客户实景等全流程验证。测试以"清洁率≥95%、覆盖率≥98%、MTBF≥1000h"为核心指标,采用数字孪生与120套真实场景结合的双V模型。重点包括:传感器精度(LDS误差<±10mm)、清洁系统性能(10g粉尘吸入率≥99%)、动力续航(800次循环容量保持≥80%)等硬件测试;以及SLAM重定位(误差<5cm)、AI识别(mAP>92%)等软件验证。方案特别针对宠物家庭(毛发缠绕率≤3%)、

2501_92897788的博客 2283

模型供应链安全实战:从Hugging Face到OpenAI API的入侵风险与防护

在AI工程化落地中,模型供应链安全已成为不可忽视的基石。开发者通过Hugging Face下载预训练模型、调用OpenAI API完成推理,已成为主流技术路径,但模型文件并非静态资源,而是可能携带恶意逻辑的“可执行权重”。以pickle反序列化漏洞为代表的加载风险,以及API密钥泄露、恶意权重投毒、平台令牌窃取等攻击面,正让模型分发和调用链路成为入侵者的高价值目标。理解从模型下载、加载执行到凭证管理的完整攻击链,掌握基于safetensors格式替换、沙箱隔离、行为审计、密钥轮换与配额监控的防御手段,是降低

weixin_33836874的博客 427

5分钟搞定!Unity中Matcap玻璃材质快速实现(含免费贴图资源)

本文详细介绍了在Unity中快速实现Matcap玻璃材质的方法,从技术原理到实战操作,包括Shader编写、参数调节和性能优化。通过Matcap技术,开发者可以高效创建逼真玻璃效果,特别适合移动端和快速迭代项目。文章还提供了免费贴图资源和进阶优化技巧,帮助提升视觉效果和运行效率。

a1b2c的博客 219

从零开始:DJI-F450无人机硬件组装全流程解析

本文详细解析了DJI-F450无人机的硬件组装全流程,从开箱清点到焊接、机械组装、飞控系统搭建、电路整合及调试试飞。重点介绍了电调焊接、机臂安装、飞控校准等关键步骤的实用技巧和常见问题解决方案,帮助无人机爱好者从零开始完成专业级组装。

weixin_29210759的博客 622

python读取配置文件及注意事项

python 读取配置文件的方法

m0_56130892的博客 584

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

奔图M6700-M6800-M7100-M7200 系列打印机拆解教程?

m0_58098052的博客 1595

python读取配置文件列表失败_详解Python读取配置文件模块ConfigParser

1,ConfigParser模块简介假设有如下配置文件,需要在Pyhton程序中读取$ cat config.ini[db]db_port = 3306db_user = rootdb_host = 127.0.0.1db_pass = xgmtest[SectionOne]Status: SingleName: DerekValue: YesAge: 30Single: True[Section...

weixin_39552538的博客 587

加密视频如何破解 如何解除机器码绑定的视频

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 如何破解加密...

Q-980767270的博客 5万+

YOLO11后处理优化 | 引入DIoU-NMS替代传统NMS,解决高重叠目标误删,召回率大幅提升

YOLO11模型在密集目标场景下存在NMS后处理导致的漏检问题。本文提出采用DIoU-NMS替代传统NMS,通过引入中心点距离信息,有效区分重叠但不同的目标,提升召回率。文章详细分析了传统NMS的三大局限性,对比了Soft-NMS和DIoU-NMS的优劣,并给出在YOLO11中实现DIoU-NMS的完整代码方案。该方法特别适用于安防监控、自动驾驶等目标密集场景,能够在不显著增加计算量的情况下显著改善检测效果。

2601_95807009的博客 150

python读写配置文件使用总结与避坑指南

关于今天的内容 最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结 Python 配置文件管理 configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好...

华为云官方博客 5561

构建个体结构脑网络的另一种方法

这篇文献提出了一种构建个体结构脑网络的方法即Morphometric INverse Divergence (MIND),通过T1像数据即可对每个被试构建一个脑网络,且通过多个特征进行构建而非单一的特征。即可获得由4个特征得到的个体结构网络矩阵,可以根据自己的需求采用不同的特征组合得到网络矩阵,也可以结合T1/T2像得到髓鞘化相关的网络矩阵,后续可修改代码批量处理自己的数据。这是文献贴出来的代码。在终端直接克隆到本地。2.修改路径运行代码。

weixin_52073820的博客 822

Python XML处理实战:用ElementTree解析和修改配置文件(附避坑指南)

本文详细介绍了如何使用Python标准库中的xml.etree.ElementTree模块高效解析和修改XML配置文件。通过实战案例,文章深入讲解了ElementTree的核心API、增删改查操作,并重点提供了处理大文件、命名空间和编码问题等常见陷阱的避坑指南,帮助开发者实现配置管理的自动化。

b9c0d的博客 424

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python写入字典_python读写配置文件使用总结与避坑指南

【小宅按】最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结Python 配置文件管理configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好用,使用yaml...

weixin_39723010的博客 291

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

python 覆盖list_python读写配置文件使用总结与避坑指南

【小宅按】最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结Python 配置文件管理configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好用,使用yaml...

weixin_30459905的博客 273

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

c读取ini配置文件_python读写配置文件使用总结与避坑指南

【小宅按】最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结Python 配置文件管理configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好用,使用yaml...

weixin_39755625的博客 91

python的配置文件管理_python读写配置文件使用总结与避坑指南---转载

【小宅按】最近拿python在写项目部署的相关集成代码,本来两天的工作量,硬是在来回的需求变更中,拖到了一周的时间。今天算是暂时告一段落了。这次由于涉及多个系统的调用和配置参数,代码开发中出现了较多之前未发现或者说没暴露出来的问题,今天针对这些知识点进行相关的复习与总结Python 配置文件管理configparser是python推荐使用的配置文件管理模块,但坦白说它真的不怎么好用,使用yaml...

weixin_39720181的博客 150

NEAT算法调参避坑指南:以XOR实验为例,详解NEAT-Python配置文件里那些关键参数

本文详细解析了NEAT算法在XOR实验中的关键参数配置,并提供了从简单问题到复杂场景的参数迁移策略。通过分析物种形成、突变概率等核心参数,帮助开发者优化NeuroEvolution算法性能,避免常见调参陷阱,提升进化效率。

weixin_30918633的博客 327

从配置文件到API数据:详解Python中ast.literal_eval的5个高频使用场景与避坑指南

本文详细解析了Python中ast.literal_eval的5个高频使用场景与避坑指南,包括解析非标准JSON数据、安全读取文本配置文件、处理数据库存储的Python结构、日志分析与数据清洗以及安全序列化中间方案。通过实用代码示例和常见陷阱分析,帮助开发者高效安全地处理字符串化数据结构。

weixin_33714884的博客 439

Python 配置管理实战指南:环境变量、配置文件、密钥服务与动态配置中心的落地与避坑

本文系统梳理Python配置管理的核心方法与最佳实践,涵盖环境变量、配置文件、密钥服务和动态配置中心四大方案。文章从Python语言特性切入,详细分析各方案的适用场景、优缺点及实现代码,并提供电商后台等实战案例。重点探讨如何避免"配置漂移"等生产事故,强调模块化设计、版本控制和实时监控的重要性。通过对比数据证明,合理的配置管理可将故障率降至0.1%以下,是Python服务从"能跑"到"稳跑"的关键升级路径。

铭渊老黄 579

从配置文件到数据交换:JSON vs JSONL,你的Python项目该怎么选?(避坑指南)

本文深入对比了JSON和JSONL在Python项目中的适用场景与性能差异,帮助开发者根据项目需求选择最优数据格式。通过内存模型分析、实战案例和性能测试,揭示JSONL在流式处理和大数据场景下的优势,同时提供与MongoDB、Elasticsearch等现代技术栈的集成方案,避免常见陷阱。

weixin_42530793的博客 242
上一篇: 爬虫新宠requests_html 带你甄别2019虚假大学
下一篇: 大型情感剧集Selenium:1_介绍 #华为云·寻找黑马程序员#
清风 python
博客等级 码龄9年 64粉丝 75原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值