configparser 配置文件再也不難 | Python 主題月

本文正在參加「Python主題月」,詳情查看 活動連接python

背景

在實際工做中,咱們常常會用到配置文件,對於配置文件的讀寫是基本操做,今天咱們就一塊兒來學習如何用 Python 輕鬆實現配置文件的讀寫操做。markdown

關於 configparser

configparserPython 內置的解析配置文件的庫,他能夠實現對 ini 文件的讀寫,同時也能夠對配置文件中的佔位符進行解析,總之是一個很好用,頗有用的庫。app

怎麼用 configparser

建立配置文件

建立一個名爲 info.ini 的配置文件,內容以下:ide

[base]
name = phyger
age = 18

[nova]
port = 9292
user = nova
pwd = t@123
複製代碼

以上,帶方括號字符名爲 section,即配置塊。形如k=v 格式的字符名爲 option,即配置項。post

讀取配置

配置文件和代碼在同路徑下,代碼以下:學習

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config)
複製代碼

輸出以下:ui

<configparser.ConfigParser object at 0x000001CCBC3B8AC8>
複製代碼

如上,config 爲一個 ConfigParser 對象。lua

讀取 section

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config['base'])
複製代碼

輸出以下:url

<Section: base>
複製代碼

如上,返回結果爲一個 Section 對象名爲 basespa

讀取 option-1

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config['base']['name'])
複製代碼

輸出以下:

phyger
複製代碼

如上,返回了配置文件中,base 配置塊中的 name 的值爲 phyger

讀取 option-2

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config.get('base','name'))
複製代碼

使用 get 方法和上面的切片法得出的結果是一致的。

讀取 section 中的 option 列表

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config.items('base'))
複製代碼

輸出以下:

[('name', 'phyger'), ('age', '18')]
複製代碼

插值表達式的應用

修改配置文件以下:

[base]
name = phyger
age = 18
msg = %(name)s-%(age)s

[nova]
port = 9292
user = nova
pwd = t@123
複製代碼

代碼:

import configparser

config=configparser.ConfigParser()

config.read('info.ini')
print(config.get('base','msg'))
複製代碼

輸出以下:

phyger-18
複製代碼

配置寫入

需求:新增一個名爲 hellosection,添加一條 option

import configparser

# 建立ConfigParser對象
config=configparser.ConfigParser()

# 讀取配置文件
config.read('info.ini')
print(config.get('base','msg'))

# 添加section
config.add_section('hello')

# 添加option
config['hello']['key']='value'

# 將config對象寫入配置文件
with open('info.ini',mode='w') as fp:
    config.write(fp)
複製代碼

寫入後的配置文件:

[base]
name = phyger
age = 18
msg = %(name)s-%(age)s

[nova]
port = 9292
user = nova
pwd = t@123

[hello]
key = value
複製代碼

實戰

代碼運行過程當中修改 option,後續代碼可以用到新的 option

import configparser

# 建立ConfigParser對象
config=configparser.ConfigParser()

# 讀取配置文件
config.read('info.ini')
name1=config.get('base','name')
print('on start, my name is',name1)

# 修改option
config['base']['name']='flyboy'

# 將config對象寫入配置文件
with open('info.ini',mode='w') as fp:
    config.write(fp)

# 從新獲取option (這裏不須要從新read,就能拿到新的數據,能夠解決py做爲配置文件的沒法刷新數據的問題)
name2=config.get('base','name')

print('after modified, my name is',name2)
複製代碼

輸出以下:

on start, my name is phyger
after modified, my name is flyboy
複製代碼
相關文章
相關標籤/搜索