python中configparser详解_python configparser模块详解

此模块提供了一个实现基本配置语言的类

首先来看一个非常基本的配置文件,如下所示格式:

[DEFAULT]

ServerAliveInterval = 45

Compression = yes

CompressionLevel = 9

ForwardX11 = yes

[bitbucket.org]

User = hg

[topsecret.server.com]

Port = 50022

ForwardX11 = no

可以通过编程的方式创建上述文件:

>>> 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)

...

创建完毕之后我们可以通过以下代码来回读所记录的数据:

>>> import configparser

>>> 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'

配置文件有几个部分组成:每个部分有[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?

由于解析器并不会记录文件中值得数据类型,它始终以字符串的形式保存。因此简单的传递 bool() 函数并不会处理出正确结果,因为 bool('False') 仍然返回 True 配置器提供了一个方法 **getboolean()** 此方法可以识别 (不区分大小写)'yes'/ 'no','on'/ 'off', 'true'/ 'false'和'1'/ '0'中的布尔值。例如: ```python # 上接上述配置代码 >>> topsecret.getboolean('ForwardX11') False >>> config['bitbucket.org'].getboolean('ForwardX11') True >>> config.getboolean('bitbucket.org', 'Compression') True # 此外,配置器还提供了 getint() 和 getfloat() 方法来处理数据类型 ```

像字典一样,配置器提供了获取 section 值的方法 get()

>>> topsecret.get('Port')

'50022'

>>> topsecret.get('CompressionLevel')

'9'

>>> topsecret.get('Cipher')

>>> topsecret.get('Cipher', '3des-cbc')

'3des-cbc'

需要注意的是:默认值(default)优先于回退值(fallback),例如CompressionLevel密钥仅在该DEFAULT部分中指定。如果我们尝试topsecret.server.com部分获取它,即使我们指定了后备,我们也将始终获得默认值

>>> topsecret.get('CompressionLevel', '3')

'9'

以下是 configparser 模块的基本方法: * 读取配置文件 1. defaults() 返回包含实例范围默认值的字典 2. read(filename) 直接读取ini文件内容 3. sections() 获取所有的 section,以列表的形式返回 4. options(section) 获取指定 section 的所有的 option 5. items(section) 获取指定 section 所有的键值对 6. get(section, option) 获取指定 section 中 option 的值 7. getint(section, option) 获取指定 section 中 option 的值,以 int 类型返回 8. getfloat(section, option) 获取指定 section 中 option 的值,以 float 类型返回 9. getboolean(section, option) 获取指定section 中 option 的值,以 boolean类型返回 * 写入配置文件 1. add_section(section) 添加指定的新的 section 2. has_section(section) 判断是否存在指定的 section 3. set(section, option, value) 设置指定 section 中 option 的值 4. remove_section(section) 删除指定 section 5. remove_option(section, option) 删除指定 section 中的 option 6. write(fileobject) 将内容写入配置文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值