ini文件、xml文件和json文件属于应用系统常用的配置文件格式,本文学习Python中读写ini文件的基本方式,后续文章中陆续学习并记录Python读写其它格式配置文件的基本方式。关于ini文件的基本格式如下图所示,详细的介绍见参考文献5.

如何修改python引用包文件本地 python引用配置文件_configparser


  Python中的configparser模块支持读写ini文件,如果本机中没有安装该模块,可以使用pip install configparser命令安装。configparser中主要使用ConfigParser 类操作ini文件,关于该类的详细介绍请见参考文献1-3。本文中列出该类中常用的函数,其中本文测试使用的函数最主要包括read、write、sections、options、get。

序号

名称

说明

1

sections

返回可用节的列表,不包括default_section,后者指定存放其他节的默认值和用于插值的特殊节的名称 (通常命名为 “DEFAULT”)

2

add_section

新增节

3

has_section

检查是否存在指定节,不包括default section

4

options

返回指定节中键列表

5

has_option

检查指定节中是否存在指定键

6

read

读取指定配置文件,本文中主要指ini文件

7

get

获取指定节中的指定键值,返回字符串类型,如果需要获取指定类型的值,ConfigParser类中提供了getint 、getfloat、getboolean等函数

8

set

设置指定节中的指定键值。如果给定的节存在,则将所给出的选项设为指定的值;在其他情况下将引发 NoSectionError

9

write

将配置信息保存至指定文件

  本文的测试数据及测试代码主要参考自参考文献1,ini文件的示例是执行参考文献1中的写文件示例,代码示例及执行结果如下所示:

# coding=utf-8
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)

如何修改python引用包文件本地 python引用配置文件_ini文件_02


  接着是读ini文件示例代码及执行结果,也是参考参考文献1执行的。从执行结果可以看到,正如sections的介绍所言,DEFAULT节是没有包括在sections的返回结果中,同时每节中的键值都是当前节与DEFAULT的合集,如果有重复键,则以当前节中的键为准。

# coding=utf-8

import configparser

cfg = configparser.ConfigParser()
cfg.read(r'E:\MyPrograms\Python\tkinter\ini\example.ini')
print('readed ini file')

sections = cfg.sections()
for sec in sections:
    print(cfg.options(sec))

print(cfg.get('topsecret.server.com','Port'))

print('end readed ini file')

如何修改python引用包文件本地 python引用配置文件_参考文献_03


  最初执行读ini文件的测试代码时,read函数的输入参数——文件路径字符串,没有带r,也没有用转义字符,但是程序执行过程没有报错,只是sections没有返回值。十行左右的代码,折腾了将近一个小时才找到原因,一直以为是ini文件出了问题,郁闷。