如果你想用Python处理ini这样格式的文件,肯定离不开configparser标准库。它非常简单,使用起来非常方便。下面我们一起来看看吧。简单读写读写ini文件非常简单,看下面的例子就明白了。要做的第一件事是创建ConfigParser的实例。使用起来非常简单,基本上和处理字典是一样的。处理完之后,调用ConfigParser的write方法,传入一个文件保存。更容易读取,直接将文件名传递给读取方法即可。importconfigparserconfig_filename='config.ini'config=configparser.ConfigParser()config['default']={'name':'Yitian','age':30,'gender':'male'}config['young']={'name':'yitian','age':20}withopen(config_filename,'w',encoding='utf8')asfile:config.write(file)config2=configparser.ConfigParser()config2.read(config_filename,encoding='utf8')forsectioninconfig2.sections():print(f'[{section}]')forkeyinconfig2[section]:print(f'{key}={config2[section][key]}')'''[default]name=yitianage=30gender=male[young]name=yitianage=20'''还有几个读取其他地方配置的读取函数。read_file,从文件中读取配置,参数为打开的文件read_string,从字符串中读取配置,参数为配置字符串read_dict,从字典中读取配置,参数为字典处理数据类型所有数据类型都是字符串类型,如果需要使用其他数据类型,需要自己手动转换。不过也可以使用getXXX函数直接获取某类数据。这些函数包括getint、getfloat和getbooloean。如果需要,也可以自己添加自定义数据类型处理函数。打印(类型(配置['默认']['年龄']))打印(类型(int(配置['默认']['年龄'])))打印(类型(配置['默认'].getint('age')))''''''获取值时,如果没有这个值,我们可以给get参数添加一个secondvalue获取备用值,该方法对getint、getfloat、getboolean等方法也有效。但是,如果配置文件中有DEFAULT段,并且在default段中设置了某个值,这里的默认值将被用来代替替代值,所以使用时请注意。字符串插值配置文件可以引用其他选项,可以通过在ConfigParser构造函数中传递插值参数来控制。c=configparser.ConfigParser(interpolation=configparser.ExtendedInterpolation())c.read_string(s)print(c['young']['age'])默认插入是configparser.BasicInterpolation(),可以处理%(value)的格式选项。这里secondage的值为yitian2.[DEFAULT]name=yitianage=25[young]name=yitian2age=%(name)s还有configparser.ExtendedInterpolation(),功能比较强大,可以参考其他章节选项。它的格式是${value}。这里的第二纪元将是倚天。如果想引用本章的选项,可以省略section:chapter,只保留变量名即可。[DEFAULT]name=yitianage=25[young]name=yitian2age=${DEFAULT:name}如果不需要任何插值和转换,可以直接指定插值为None,这样ConfigParser会原样读取字符串.c=configparser.ConfigParser(interpolation=None)实用函数ConfigParser还包含了一些使用函数,在我们处理配置文件的时候非常有用。函数名使用sections()返回所有section的列表,不包括默认sectionadd_section(section)添加一个新sectionhas_section(section)判断section是否存在options(section)返回section下所有options的列表has_options(section,option)判断给定section下是否有optionremove_options(section,option)deleteanoptionunderagivensectionremove_section(section)delete某个section有一些函数不常用,就不做了在这里就不介绍了。对于大多数情况,以上内容绰绰有余。