首页 > 编程语言 >Python标准库-Configparser-配置文件解析器

Python标准库-Configparser-配置文件解析器

时间:2022-12-04 10:57:14浏览次数:71  
标签:解析器 配置文件 Python section value topsecret key config

简介

官方文档
开发中INI格式的配置文件使用还是有必要的。如果某些配置项需要在运行时由用户来修改指定,比如数据库用户信息等等,这种配置项如果使用INI格式的配置文件来操作的话就会方便很多。Python中操作配置文件的模块为configparser,这个模块可以用来解析与Windows上INI文件结构类似的文件。
ps:这个库 并不 能够解析或写入在 Windows Registry 扩展版本 INI 语法中所使用的值-类型前缀。

实操

受支持的INI文件结构

配置文件是由小节组成的,每个小节都有一个[section] 标头,加上多个由特定字符串 (默认为 = 或 : 1) 分隔的键/值条目。 在默认情况下,小节名对大小写敏感而键对大小写不敏感 。键和值开头和末尾的空格会被移除。 在解释器配置允许时值可以被省略 ,在此情况下键/值分隔符也可以被省略。 值还可以跨越多行,只要值的其他行带有比第一行更深的缩进。 依据解析器的具体模式,空白行可能会被视为多行值的组成部分或是被忽略。

  • section:表示一个区块,由方括号及方括号中的名称组成,section的范围为当前方括号到下一个方括号的内容。如“Simple Values”、“All Values Are Strings“......特性如下:
    (1)大小写和空格检查:section中的名称在保存和获取的时候是原样保存和获取的,即大小写不一样或者空格不一样等都是不同的section;
    (2)重复性检查:同一个配置文件中section名称是不允许重复的。
  • option:表示section中的配置项,由key、分隔符和value组成的键值对,如:[Simple Values]下的”key=value“。特性如下:
    (1)大小写检查:key是大小写不敏感的,保存进文件的时候会自动将key小写保存,但value是大小写敏感的;
    (2)空格检查:通过key获取value时,会自动将文件中的key和value前后空格去掉再进行匹配。
    (3)跨多行检查:key是不能跨行的,但是value可以跨行,只要第二行即之后的行的缩进与第一行不同即可,一直到下一个option为止;
    (4)重复性检查:和section一样,同一section下的key是不允许重复的;
    (5)分隔符:可以是等号“=”或者冒号“:”。
  • 注释:行注释用井号“#”或者分号“;”表示,特别需要注意的是必须得是行开头(前面可以有空格),用在行中间的就不会算作是注释了。
  • DEFAULT:这是一个特殊的section,会用作其他section的option取不到值时的备用值,或者可以理解为它是一个root,其他的section都是它的子section,但不是必须提供的。
    格式示例:
[Simple Values]
key=value
spaces in keys=allowed
spaces in values=allowed as well
spaces around the delimiter = obviously
you can also use : to delimit keys from values

[All Values Are Strings]
values like this: 1000000
or this: 3.14159265359
are they treated as numbers? : no
integers, floats and booleans are held as: strings
can use the API to get converted values directly: true

[Multiline Values]
chorus: I'm a lumberjack, and I'm okay
    I sleep all night and I work all day

[No Values]
key_without_value
empty string value here =

[You can use comments]
# like this
; or this

# By default only in an empty line.
# Inline comments can be harmful because they prevent users
# from using the delimiting characters as parts of values.
# That being said, this can be customized.

    [Sections Can Be Indented]
        can_values_be_as_well = True
        does_that_mean_anything_special = False
        purpose = formatting for readability
        multiline_values = are
            handled just fine as
            long as they are indented
            deeper than the first line
            of a value
        # Did I mention we can indent comments, too?

支持的数据类型

配置解析器并不会猜测配置文件中值的类型,而总是将它们在内部存储为字符串。 这意味着如果你需要其他数据类型,你应当自己来转换

写入数据

>>> import configparser
>>> config = configparser.ConfigParser()
>>> config['DEFAULT'] = {'ServerAliveInterval': '45',
...                      'Compression': 'yes',
...                      'CompressionLevel': '9'}
>>> config['bitbucket.org'] = {}
>>> config['bitbucket.org']['User'] = 'hg'
>>> config['topsecret.server.com'] = {}
>>> topsecret = config['topsecret.server.com']
>>> topsecret['Port'] = '50022'     # mutates the parser
>>> topsecret['ForwardX11'] = 'no'  # same here
>>> config['DEFAULT']['ForwardX11'] = 'yes'
>>> with open('example.ini', 'w') as configfile:
...   config.write(configfile)

读取数据

>>> config = configparser.ConfigParser()
>>> config.sections()
[]
>>> config.read('example.ini')
['example.ini']
>>> config.sections()
['bitbucket.org', 'topsecret.server.com']
>>> 'bitbucket.org' in config
True
>>> 'bytebong.com' in config
False
>>> config['bitbucket.org']['User']
'hg'
>>> config['DEFAULT']['Compression']
'yes'
>>> topsecret = config['topsecret.server.com']
>>> topsecret['ForwardX11']
'no'
>>> topsecret['Port']
'50022'
>>> for key in config['bitbucket.org']:  
...     print(key)
user
compressionlevel
serveraliveinterval
compression
forwardx11
>>> config['bitbucket.org']['ForwardX11']
'yes'

标签:解析器,配置文件,Python,section,value,topsecret,key,config
From: https://www.cnblogs.com/victoryhan/p/16930053.html

相关文章

  • Python - Scrapy
    1.安装第三方包pipinstallScrapy2.创建项目#生成文件夹scrapydemo1PSE:\PyProject>scrapystartprojectscrapydemo1NewScrapyproject'scrapydemo1',using......
  • Python的PyQt框架的使用-创建主窗体篇
    Python的PyQt框架的使用-构建环境篇​​一、前言​​​​二、创建主窗体​​一、前言个人主页:​​ζ小菜鸡​​大家好我是ζ小菜鸡,小伙伴们,让我们一起来学习Python的PyQ......
  • Nacos 中的配置文件如何实现加密传输
    小伙伴们知道,SpringCloudConfig很早就提供了配置文件的加解密功能,并且支持对称加密和非对称加密两种不同的模式。Nacos作为分布式配置中心+服务注册中心的合体,在配置文......
  • Python实现两个excel数据匹配
    Python实现两个excel数据匹配本文结合他人文章写成参考文章:https://blog.csdn.net/u010034713/article/details/110921270https://www.cnblogs.com/puresoul/p/7520198......
  • Python sql转字典
    问题返回给前端需提供键值对格式,原本查询数据库只返回值。 解决创建游标对象时填入参数cursor=pymysql.cursors.DictCursorsql="SELECTuser_id,email,nati......
  • 3、使用 TVMC Python 入门:TVM 的高级 API
    本节将介绍针对TVM初学者设计的脚本工具。开始前如果没有下载示例模型,需要先通过终端下载resnet模型:cdmyscripts/mvresnet50-v2-7-frozen.onnxmy_model.onnx......
  • PYTHON 判断引用路径的类型
    PYTHON判断引用路径的类型如下方法,用于实现在不加载模块的前提下,判断某一个python引用路径是否存在,以及属于什么类型(模块目录,模块文件,类名).用于在一些不便......
  • AI人工智能-python
    AI概念语音合成可将文字信息转化为声音信息语音识别可将语音识别为文字百度ai平台页面熟悉              创建应用     ......
  • ssm四个配置文件的相关解释
    一.解释1.application-config.xml1.1总的配置文件,将三个配置联系在一起。2.spring-dao.xml2.1管理数据流层,导入并管理mybatis.xml。2.2mybatis.xml管理数据库连接,操作......
  • SSM配置文件整合
    SSM配置文件整合1.ApplicationContext.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="ht......