Python configparsr標準庫簡介:輕鬆處理INI文件

如果你要使用Python處理類似ini這種格式的文件,那麼肯定離不開configparser標準庫,它使用起來很簡單而且非常方便。下面就讓我們來看看吧。

簡單讀寫

讀寫ini文件非常簡單,來看看下面的例子就明白了。首先要創建ConfigParser的實例,使用它則非常簡單,基本上就和處理字典完全一樣。處理完畢之後,調用ConfigParser的write方法並傳遞一個文件就可以將其保存下來了。讀取時候更加簡單,直接向read方法傳遞文件名即可。

<code>import configparser

config_filename = 'config.ini'

config = configparser.ConfigParser()
config['default'] = {'name': '易天', 'age': 30, 'gender': 'male'}
config['young'] = {'name': 'yitian', 'age': 20}

with open(config_filename, 'w', encoding='utf8')as file:
config.write(file)

config2 = configparser.ConfigParser()
config2.read(config_filename, encoding='utf8')
for section in config2.sections():
print(f'[{section}]')
for key in config2[section]:
print(f'{key} = {config2[section][key]}')

'''
[default]
name = 易天
age = 30
gender = male
[young]
name = yitian
age = 20
'''
/<code>

另外還有幾個read函數,用於從其他地方讀取配置。

  • read_file,從文件讀取配置,參數是一個已經打開的文件
  • read_string,從字符串讀取配置,參數是一個配置字符串
  • read_dict,從字典讀取配置,參數是一個字典

處理數據類型

所有的數據類型都是字符串類型,如果你需要使用其他數據類型,需要自己手動轉換。不過你也可以使用getXXX函數來直接獲取某種類型的數據,這樣的函數有getint、getfloat、getbooloean,如果你需要的話,還可以自己添加自定義數據類型的處理函數。

<code>print(type(config['default']['age']))
print(type(int(config['default']['age'])))
print(type(config['default'].getint('age')))
'''
<class>
<class>
<class>
'''
/<class>/<class>/<class>/<code>

默認值和備用值

在獲取值的時候,假如沒有這個值,我們可以給get參數添加第二個值來獲得一個備用值,這種方法對於getint、getfloat、getboolean方法等同樣適用。

但是如果配置文件中存在DEFAULT章節,而且默認章節設置了某個值的話,就會用這裡的默認值取代備用值,因此在使用的時候大家要注意一下。

字符串插入

配置文件中可以引用其他選項,可以通過在ConfigParser構造函數中傳入interpolation參數來進行控制。

<code>c = configparser.ConfigParser(
interpolation=configparser.ExtendedInterpolation())
c.read_string(s)
print(c['young']['age'])
/<code>

默認的插入是configparser.BasicInterpolation(),可以處理%(value)s格式的選項。這裡的第二個age的值會是yitian2.

<code>[DEFAULT]
name = yitian
age = 25
[young]
name = yitian2
age = %(name)s
/<code>

還有一種是configparser.ExtendedInterpolation(),功能更強,可以引用其他章節的選項。它的格式是${value}。這裡的第二個age會是yitian,如果要引用本章節的選項,可以省去section:章節,只保留變量名。

<code>[DEFAULT]
name = yitian
age = 25
[young]
name = yitian2
age = ${DEFAULT:name}
/<code>

如果不需要任何插入和轉換,可以直接將interpolation指定為None,這樣ConfigParser就會原樣讀取字符串。

<code>c = configparser.ConfigParser(interpolation=None) 

/<code>

實用函數

ConfigParser還包含了一些使用函數,在我們處理配置文件的時候非常有用。


Python configparsr標準庫簡介:輕鬆處理INI文件


還有一些函數不太常用,這裡我就不介紹了。對於大部分情況,其實上面這些已經足夠用了。如果有什麼意見和建議的話,歡迎評論區討論!


分享到:


相關文章: