window下我們常常用ini文件作爲配置文件,一個典型的配置文件如下:
[net]
ip = 21.16.16.245
port = 2232
我們要做的事情就是從裏面讀寫鍵值,Python提供了一個ConfigParser包來做ini文件的續寫,很簡單的一個事情,實際操作中還是遇到一些小坑,做個記錄。
注:我的Python 3.6,如果是Python2.7可能不存在我遇到的坑。
導入包
import configparser
conf = configparser.ConfigParser()
iniFileUrl="sysconfig.ini"
這裏就遇到了第一個錯誤:
ModuleNotFoundError: No module named ‘ConfigParser’
經過查證,在Python3.x中,ConfigParser.py 已經更名爲 configparser.py 所以出錯,改一下名字就對了。
常用操作
讀取鍵值:
conf.read(iniFileUrl)
value = conf.get(‘net’,’ip’)
寫入鍵值:
conf.read(iniFileUrl)
conf.set(‘net’,’ip’, ‘127.0.0.1’)
conf.write(open(iniFileUrl, ‘w’))
這裏write的時候我用的’wb’,遇到了第二個錯誤:
TypeError: a bytes-like object is required, not ‘str’
python2.x中,寫入參數用 ‘wb’,默認數據是byte數據,二進制方式讀寫
python3.x中,寫入參數要 ‘b’,默認是unicode
方法彙總
讀取
- read(filename):讀取ini文件中的內容
- sections():得到所有section,返回列表形式
- options(section):得到給定section的所有option
- items(section):得到指定section的所有key-value
- get(section,option):得到section中的option值,返回str/int類型
寫入
- write(fp) :將config對象寫入至某個 .init 格式的文件
- add_section(sectionname):添加一個名爲sectionname的section
- set(sectionname,option,value):設置sectionname的option和value的值
刪除
- remove_option(section, option) 刪除
- remove_section(section)
注意:修改和刪除操作都需要回寫:
conf.write(open(iniFileUrl, ‘w’))