前言
使用配置文件來靈活的配置一些參數是一件很常見的事情,配置文件的解析並不復雜,在python里更是如此,在官方發布的庫中就包含有做這件事情的庫,那就是configParser。configParser解析的配置文件的格式比較象ini的配置文件格式,就是文件中由多個section構成,每個section下又有多個配置項。括號“[ ]”內包含的為section。緊接着section 為類似於key-value 的options 的配置內容。
比如,我的目錄如下,在test_config下有一個config.ini配置文件
一、ConfigParser簡介
ConfigParser 是用來讀取配置文件的包。配置文件的格式如下:中括號“[ ]”內包含的為section。section 下面為類似於key-value 的配置內容。括號“[ ]”內包含的為section。緊接着section 為類似於key-value 的options 的配置內容。
# 定義config分組 [config] platformName=Android appPackage=com.romwe appActivity=com.romwe.SplashActivity # 定義cmd分組 [cmd] viewPhone=adb devices startServer=adb start-server stopServer=adb kill-server install=adb install aaa.apk id=1 weight=12.1 isChoice=True # 定義log分組 [log] log_error=true
二、ConfigParser 初始化對象
使用ConfigParser 首選需要初始化實例,並讀取配置文件:
PS:python3里面自帶configparser模塊來讀取ini文件,敲黑板:python2的版本是Configparser
# python3 import configParser config = configparser.ConfigParser() config.read("config_ini", encoding="utf-8")
三、ConfigParser 常用方法
1、獲取所用的section節點
# 獲取所用的section節點 import configparser config = configparser.ConfigParser() config.read("config_ini", encoding="utf-8") print(config.sections()) #運行結果 # ['config', 'cmd', 'log']
2、獲取指定section 的options。即將配置文件某個section 內key 讀取到列表中:
import configparser config = configparser.ConfigParser() config.read("config_ini", encoding="utf-8") r = config.options("config") print(r) #運行結果 # ['platformName', 'appPackage', 'appActivity']
3、獲取指點section下指點option的值
import configparser config = configparser.ConfigParser() config.read("config.ini", encoding="utf-8") r = config.get("config", "platformName")
# r1 = config.getint("db", "k1") #將獲取到值轉換為int型
# r2 = config.getboolean("db", "k2" ) #將獲取到值轉換為bool型
# r3 = config.getfloat("db", "k3" ) #將獲取到值轉換為浮點型
print(r)
#運行結果 # Android
4、獲取指點section的所用配置信息
import configparser config = configparser.ConfigParser() config.read("config.ini", encoding="utf-8") r = config.items("platformName") print(r) #運行結果 #[('platformName', 'Android'), ('appPackage', 'com.romwe'), ('appActivity', 'com.romwe.SplashActivity')]
5、修改某個option的值,如果不存在則會出創建
# 修改某個option的值,如果不存在該option 則會創建 import configparser config = configparser.ConfigParser() config.read("config_ini", encoding="utf-8") config.set("config", "platformName", "ios") #修改platformName的值為ios config.write(open("config.ini", "w"))
# 運行結果 # 定義config分組 [config] platformName=ios appPackage=com.romwe appActivity=com.romwe.SplashActivity # 定義cmd分組 [cmd] viewPhone=adb devices startServer=adb start-server stopServer=adb kill-server install=adb install aaa.apk id=1 weight=12.1 isChoice=True # 定義log分組 [log] log_error=true
6、檢查section或option是否存在,bool值
import configparser config = configparser.ConfigParser() config.has_section("config") #是否存在該section config.has_option("config", "platformName") #是否存在該option
7、添加section 和 option
import configparser config = configparser.ConfigParser() config.read("config.ini", encoding="utf-8") if not config.has_section("brand"): # 檢查是否存在section config.add_section("brand") if not config.has_option("brand", "China"): # 檢查是否存在該option config.set("brand", "China", "xiaomi") config.write(open("config.ini", "w"))
# 運行結果 # 定義config分組 [config] platformName=Android appPackage=com.romwe appActivity=com.romwe.SplashActivity # 定義cmd分組 [cmd] viewPhone=adb devices startServer=adb start-server stopServer=adb kill-server install=adb install aaa.apk id=1 weight=12.1 isChoice=True # 定義log分組 [log] log_error=true [brand] China=xiaomi
8、刪除section 和 option
import configparser config = configparser.ConfigParser() config.read("config.ini", encoding="utf-8") config.remove_section("brand") #整個section下的所有內容都將刪除 config.write(open("config.ini", "w"))
# 定義config分組 [config] platformName=Android appPackage=com.romwe appActivity=com.romwe.SplashActivity # 定義cmd分組 [cmd] viewPhone=adb devices startServer=adb start-server stopServer=adb kill-server install=adb install aaa.apk id=1 weight=12.1 isChoice=True # 定義log分組 [log] log_error=true
9、寫入文件
以下的幾行代碼只是將文件內容讀取到內存中,進過一系列操作之后必須寫回文件,才能生效。
import configparser config = configparser.ConfigParser() config.read("comfig.ini", encoding="utf-8")
寫回文件的方式如下:(使用configparser的write方法)
config.write(open("config.ini", "w"))