#如何使用Python3读取配置文件(ini)html
##ini文件简介python
ini是咱们常见到的配置文件格式之一。git
ini是微软Windows操做系统中的文件扩展名(也经常使用在其余系统)。github
INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操做系统或特定程序初始化或进行参数设置。操作系统
百度百科code
经过它,能够将常常须要改变的参数保存起来(并且还可读),使程序更加的灵活。htm
我先给出一个ini文件的示例。dns
[School] ip = 10.15.40.123 mask = 255.255.255.0 gateway = 10.15.40.1 dns = 211.82.96.1 [Match] ip = 172.17.29.120 mask = 255.255.255.0 gateway = 172.17.29.1 dns = 0.0.0.0
这个配置文件中保存的是不一样场合下的IP设置参数。ip
下面将以生成和读取这个配置文件为例,进行讲解。utf-8
##Python(v3)读取方法
首先,Python读取ini配置须要用到ConfigParser
包,因此要先加载它。
import configparser
以后咱们须要载入配置文件。
config=configparser.ConfigParser() #IpConfig.ini能够是一个不存在的文件,意味着准备新建配置文件。 config.read("IpConfig.ini")
接下来,咱们可使用configparser.add_section()
向配置文件中添加一个Section
。
#添加节School config.add_section("School")
注意:若是文件中已经存在相应的项目,则不能再增长同名的节。
而后可使用configparser.set()
在节School
中增长新的参数。
#添加新的IP地址参数 config.set("School","IP","192.168.1.120") config.set("School","Mask","255.255.255.0") config.set("School","Gateway","192.168.1.1") config.set("School","DNS","211.82.96.1")
你能够以一样的方式增长其它几项。
#因为ini文件中可能有同名项,因此作了异常处理 try: config.add_section("Match") config.set("Match","IP","172.17.29.120") config.set("Match","Mask","255.255.255.0") config.set("Match","Gateway","172.17.29.1") config.set("Match","DNS","0.0.0.0") except configparser.DuplicateSectionError: print("Section 'Match' already exists")
增长完全部须要的项目后,要记得使用configparser.write()
进行写入操做。
config.write(open("IpConfig.ini", "w"))
以上就是写入配置文件的过程。
接下来咱们使用configparser.get()
读取刚才写入配置文件中的参数。读取以前要记得读取ini文件。
ip=config.get("School","IP") mask=config.get("School","mask") gateway=config.get("School","Gateway") dns=config.get("School","DNS") print((ip,mask+"\n"+gateway,dns))
##完整示例
下面是一个完整的示例程序,他将生成一个IpConfig.ini
的配置文件,再读取文件中的数据,输出到屏幕上。
# -*- coding: utf-8 -*- import configparser #读取配置文件 config=configparser.ConfigParser() config.read("IpConfig.ini") #写入宿舍配置文件 try: config.add_section("School") config.set("School","IP","10.15.40.123") config.set("School","Mask","255.255.255.0") config.set("School","Gateway","10.15.40.1") config.set("School","DNS","211.82.96.1") except configparser.DuplicateSectionError: print("Section 'School' already exists") #写入比赛配置文件 try: config.add_section("Match") config.set("Match","IP","172.17.29.120") config.set("Match","Mask","255.255.255.0") config.set("Match","Gateway","172.17.29.1") config.set("Match","DNS","0.0.0.0") except configparser.DuplicateSectionError: print("Section 'Match' already exists") #写入配置文件 config.write(open("IpConfig.ini", "w")) ip=config.get("School","IP") mask=config.get("School","mask") gateway=config.get("School","Gateway") dns=config.get("School","DNS") print((ip,mask+"\n"+gateway,dns))
##总结
Python读取ini文件仍是十分简单的,这里我给出的只是一些简单的使用方法,若是想用更高级的功能,好比和注释有关的功能。能够参考Pyhton官方文档
Python3官方参考文档
本文MarkDown源文件和提到的示例程序源代码,能够在个人Github上获取。