1. 程式人生 > 其它 >Python使用ConfigParser模組讀取配置檔案(config.ini)以及寫入配置檔案

Python使用ConfigParser模組讀取配置檔案(config.ini)以及寫入配置檔案

這篇文章主要介紹了Python讀取配置檔案(config.ini)以及寫入配置檔案,具有很好的參考價值,希望對大家有所幫助!

前言

使用配置檔案來靈活的配置一些引數是一件很常見的事情,配置檔案的解析並不複雜,在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"))