在python中实现自定义配置文件解析及应用技巧[yaml and ConfigParser]

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介:

给大家介绍下两个库哈ConfigParser和yaml ,这俩主要是实现配置文件解析的。


前沿:

这段时间同事做项目,我发现有一些个全局配置或者平台的主配置文件,都是写在一个模块里面的。 这也太不专业和太专业了。。。 不专业在与,python有很多这样的配置文件解析的模块。 太专业在于,每次改全局配置都要在xxx.py修改。。。给人的感觉不爽。。。


我一般是咋用的:

脚本的配置变量的解析修改 ! 说的通俗点,我跑一个脚本,不用在脚本的后面加上一堆的参数,可以直接在配置文件里修改线程数目, 绑定的ip地址这些个常量。。。 我有的时候,需要两个独立进程的变量交互,也可以用yaml,当然这个方法有点搓,但也是一种好实现的方法。。。。



先说yaml~

现在好多的配置文件也都在用这个,比如牛逼的saltsatck 集群配置用的就是yaml !!!


YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互。YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的。


YAML 简述

  • YAML的可读性好。

  • YAML和脚本语言的交互性好。

  • YAML使用实现语言的数据类型。

  • YAML有一个一致的信息模型。

  • YAML易于实现。

  • YAML可以基于流来处理;

  • YAML表达能力强,扩展性好。

  • YAML语法简单 Structure通过空格来展示,Sequence里的项用"-"来代表,Map里的键值对用":"分隔。

  • 目前现有的语言实现广泛:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript。除了Java,其他都是脚本语言


介绍完yaml~ 咱们开始搞起

第一步安装

094327366.png

yaml的配置文件 ~


1
2
3
4
5
6
7
8
9
10
11
12
name: xiaorui
age:  18
spouse:
     name: mm
     age:  25
sb:
  -  name: shencan
    age:  11
  -  name1: dehua
    age1:  12
  -  name2: qiaofeng
    age1:  13


关于yaml的执行文件 ~

open是打开一个配置文件,load是加载这个配置文件

1
2
3
4
5
#coding:utf-8
import  yaml
=  open ( 'kk.yaml' )
=  yaml.load(f)
print  x

094444553.png


我们再继续的拆分,其实大家都懂的。。。

095219917.png


配置文件的解析并不复杂,在python里更是如此,在官方发布的库中就包含有做这件事情的库,那就是ConfigParser !!!


咱们常见的ini配置文件就可以用 configparser !!!

安装 configparser 模块

103345149.png

configparser的配置文件

103357451.png


python.py ~


1.基本的读取配置文件
-read(filename) 直接读取ini文件内容
-sections() 得到所有的section,并以列表的形式返回
-options(section) 得到该section的所有option
-items(section) 得到该section的所有键值对
-get(section,option) 得到section中option的值,返回为string类型
-getint(section,option) 得到section中option的值,返回为int类型,还有相应的getboolean()和getfloat() 函数。


2.基本的写入配置文件
-add_section(section) 添加一个新的section
-set( section, option, value) 对section中的option进行设置,需要调用write将内容写入配置文件。


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#coding:utf- 8
import  ConfigParser
cf = ConfigParser.ConfigParser()
#read config
cf.read( "test.conf" )
return  all section
secs = cf.sections()
print  'sections:' , secs
opts = cf.options( "db" )
print  'options:' , opts
kvs = cf.items( "gg" )
print  'sec_a:' , kvs
#read by type
str_val = cf. get ( "db" "db_host" )
print  "value for sec_a's a_key1:" , str_val
#write config
#update value
#我这里要更新的
cf. set ( "db" "db_host" "10.10.10.1" )
#我这里新增加的一条
# set  new  value
cf. set ( "db" "weburl" "xiaorui.cc" )
#create a  new  section
#我这里新加的一个段落
cf.add_section( 'new-duanluo' )
cf. set ( 'a_new_section' 'new_key' 'new_value' )
#write back to configure file
cf.write(open( "test.conf" "w" ))



103908462.png


要是觉得复杂,可以看看这个小例子:

conf文件

1
2
3
4
5
6
7
8
[DB]
host= 127.0 . 0.1
name=mydb
user=root
pwd=testpwd
[TH]
thread= 5
timeout= 30

python文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#coding=utf- 8
import  ConfigParser
cf = ConfigParser.ConfigParser()
cf.read( 'conf.ini' ) #另个方法是cf.readfp(fp) fp是已打开的文件对象
# 列出所有sections
sec = cf.sections()
print sec
#列出[TB]下的options
pos = cf.options( "TH" )
print pos
#直接读取配置值
print cf. get ( "DB" , "host" )  #不要与字典的 get ()混淆哦
print cf. get ( "DB" , "name" )
print cf. get ( "DB" , "user" )
print cf. get ( "DB" , "pwd" )
print cf.getint( "TH" , "thread" ) #getint()返回的是整型
print cf.getint( "TH" , "timeout" )




看到结果了吧。。。 改变了值和新增了一个段落 !




 本文转自 rfyiamcool 51CTO博客,原文链接:http://blog.51cto.com/rfyiamcool/1314362,如需转载请自行联系原作者



相关文章
|
6天前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `<appender>` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `<logger>` 和 `<root>` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
65 1
|
21天前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
3天前
|
人工智能 API 开发者
HarmonyOS Next~鸿蒙应用框架开发实战:Ability Kit与Accessibility Kit深度解析
本书深入解析HarmonyOS应用框架开发,聚焦Ability Kit与Accessibility Kit两大核心组件。Ability Kit通过FA/PA双引擎架构实现跨设备协同,支持分布式能力开发;Accessibility Kit提供无障碍服务构建方案,优化用户体验。内容涵盖设计理念、实践案例、调试优化及未来演进方向,助力开发者打造高效、包容的分布式应用,体现HarmonyOS生态价值。
59 27
|
2天前
|
存储 弹性计算 安全
阿里云服务器ECS通用型规格族解析:实例规格、性能基准与场景化应用指南
作为ECS产品矩阵中的核心序列,通用型规格族以均衡的计算、内存、网络和存储性能著称,覆盖从基础应用到高性能计算的广泛场景。通用型规格族属于独享型云服务器,实例采用固定CPU调度模式,实例的每个CPU绑定到一个物理CPU超线程,实例间无CPU资源争抢,实例计算性能稳定且有严格的SLA保证,在性能上会更加稳定,高负载情况下也不会出现资源争夺现象。本文将深度解析阿里云ECS通用型规格族的技术架构、实例规格特性、最新价格政策及典型应用场景,为云计算选型提供参考。
|
4天前
|
数据采集 机器学习/深度学习 存储
可穿戴设备如何重塑医疗健康:技术解析与应用实战
可穿戴设备如何重塑医疗健康:技术解析与应用实战
32 4
|
17天前
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
127 5
|
13天前
|
负载均衡 JavaScript 前端开发
分片上传技术全解析:原理、优势与应用(含简单实现源码)
分片上传通过将大文件分割成多个小的片段或块,然后并行或顺序地上传这些片段,从而提高上传效率和可靠性,特别适用于大文件的上传场景,尤其是在网络环境不佳时,分片上传能有效提高上传体验。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
14天前
|
机器学习/深度学习 数据采集 自然语言处理
基于Python的情感分析与情绪识别技术深度解析
本文探讨了基于Python的情感分析与情绪识别技术,涵盖基础概念、实现方法及工业应用。文中区分了情感分析与情绪识别的核心差异,阐述了从词典法到深度学习的技术演进,并通过具体代码展示了Transformers架构在细粒度情感分析中的应用,以及多模态情绪识别框架的设计。此外,还介绍了电商评论分析系统的构建与优化策略,包括领域自适应训练和集成学习等方法。未来,随着深度学习和多模态数据的发展,该技术将更加智能与精准。
45 0
|
15天前
|
算法 测试技术 C语言
深入理解HTTP/2:nghttp2库源码解析及客户端实现示例
通过解析nghttp2库的源码和实现一个简单的HTTP/2客户端示例,本文详细介绍了HTTP/2的关键特性和nghttp2的核心实现。了解这些内容可以帮助开发者更好地理解HTTP/2协议,提高Web应用的性能和用户体验。对于实际开发中的应用,可以根据需要进一步优化和扩展代码,以满足具体需求。
65 29
|
11天前
|
前端开发 数据安全/隐私保护 CDN
二次元聚合短视频解析去水印系统源码
二次元聚合短视频解析去水印系统源码
29 3

热门文章

最新文章