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

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

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


5847426-6a08c9b14c8a9d3d.png
清风Python
乐鑫WIFI芯片开发流程梳理-工具链、编译和下载 最近开始基于乐鑫ESP32的WIFI模组的软件开发,首先要做整套流程的梳理,乐鑫官网以及安信可上已经有了较为系统的资料,但是在实现过程中也遇到了一些问题,花了几天去解决,所以为了总结,也为了给其他人提供一些借鉴,把流程分享一下,官网上相对比较完善的,就不在赘述。 1. 开发方案选择 目前网上有两套较为成熟的方案: (1)基于乐鑫官网推荐的开发方式,原网页:https://docs.espress... 阅读详情

相关推荐

scratch航天梦主题课程作品分享,包含ppt、素材包

而今年多国都将发射探测器尝试登陆月球,2023年或将称为“登月年”,请大家发挥创新思维,以“星辰大海”为创作主题,搜集相关信息 、展开联想,为实现升空 、探测 、取样贡献创意!即使去淘宝买的素材,也要从百度网盘,但素材太多大了或者太多文件,也要充值百度网盘超级会员才能保存,提高下载速度。同学们大家好,今天我们就要开始航天主题-嫦娥五号探月工程系列的编程课程了,不仅可以学习到很多航天知识,了解本次嫦娥五号的发射历程,还能让我们用编程遨游太空呢。即使下载了,也要上传,不是特别方便,尤其是不好查找。

少儿编程吕口口 2482

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

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

sunny 4729

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1692

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

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

weixin_33836874的博客 427

KUKA机器人编程实战:5分钟搞定组输入与组输出的信号配置(附代码示例)

本文详细介绍了KUKA机器人编程中组输入与组输出的信号配置方法,通过5分钟快速掌握核心技巧。文章包含信号声明语法、典型配置流程及高级应用技巧,并附有代码示例,帮助工程师高效实现机器人与外部设备的通信。

efc123456的博客 851

绿联UGOS Pro系统虚拟机部署Windows 11详细教程(跳账户登录,安装内存驱动)

总的来说,此次的虚拟机部署Windows 11出现的问题应该是目前几乎所有虚拟机都可能出现的问题,和绿联是没有关系的。所以说如果你在其它NAS上虚拟机部署Windows 11系统如果出现同样的问题,那么今天教程的方案也同样适用于你。

qq_63499861的博客 1万+

分享一个Python配置管理方法 – 综合配置文件,argparse,传参

最近在写Python代码的时候发现自己的配置项非常混乱,有来自配置文件的,有来自argparse的,有来自函数传参的还有来自全局变量的。混乱的配置严重影响写代码的效率。于是想把配置项统一管理起来。分析后发现,我们可以根据配置文件生成一个类和argparse配置项,写入Python代码文件。编辑器可以跟据这个类提供的信息生成代码提示,方便开发。由于配置文件可能会被修改,我们加入文件监视。当配置文件有改动的时候,自动生成目标脚本。

Cocolada 的博客 553

从零组装一台会‘看’的无人机:手把手教你配置NUC机载电脑与D435深度相机(环境搭建篇)

本文详细介绍了如何从零开始组装一台具备视觉能力的智能无人机,重点讲解了NUC机载电脑与D435深度相机的配置方法。通过Ubuntu系统安装、ROS环境搭建、深度学习框架配置等步骤,帮助开发者实现无人机的自主避障和目标跟踪功能。文章还提供了性能优化和常见问题解决方案,是无人机视觉系统开发的实用指南。

weixin_30915275的博客 397

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

python 读取配置文件的方法

m0_56130892的博客 584

【Python进阶】VSCode Python开发完全指南:从环境配置到高效调试

本文通过15个实战案例,系统讲解VSCode进行Python开发的环境配置、编码技巧、调试方法及性能优化,帮助初学者快速构建专业开发环境。

赶紧的博客 3760

计算图像哈希SHA-512

上述需要将lena.jpg放在当前目录下。

计算机视觉之光 961

Win10 python双版本共存配置问题 Configuration file could not be loaded.

根据博客配置双版本python共存,重装pip时遇到问题 Configuration file could not be loaded. File contains no section headers. file: C:\Users\admin\pip\pip.ini, line: 1 ' [global]\n' 到报错路径下查看pip.ini文件,发现[global]前有空格,删除上下两行的空格即可 版本 Python 3.8.6 和 Python 2.7.18 ...

风起 5825

【AIGC】Qwen3-Embedding:Embedding与Rerank模型新标杆

Qwen3-Embedding:文本嵌入与重排序模型的技术解析与应用实践

一个内容严谨、方向前沿、极具实践价值的AI大模型技术分享站 3094

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

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

华为云官方博客 5561

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

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

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

b9c0d的博客 424

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

weixin_39723010的博客 291

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

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

weixin_30459905的博客 273

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
上一篇: Python字典技巧一锅炖
下一篇: Python爬取Boss直聘,获取全国Python薪酬榜
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值