我們編寫軟件的時候,經(jīng)常要用到配置文件,而配置文件一般為ini或xml或json文件。
本文重點闡述配置文件ini的讀取方法和技巧,xml和json文件的具體讀取方法和技巧下個文章里闡述。
ini文件以節(jié)(section)和鍵(key)構成,常用于微軟Windows操作系統(tǒng)中。這種配置文件的文件擴展名多為ini,故名。由于ini文件是純文本格式,所以可以用任何純文本編輯器來進行編輯其內(nèi)容。
配置文件test.ini 的內(nèi)容,使用記事本notepad 打開
節(jié)(section)
節(jié)用方括號括起來,單獨占一行,例如:
[section]
鍵(key)
鍵(key)又名屬性(property),單獨占一行用等號連接鍵名和鍵值,例如:
name=value
注釋(comment)
注釋使用英文分號(;)開頭,單獨占一行。在分號后面的文字,直到該行結尾都全部為注釋,例如:
; comment text
下面給大家介紹一下,用python怎么快速讀ini配置文件
使用pip install configparser命令安裝configparser模塊。
import os, sysimport configparser#dirname:程序所在的目錄, filename: 程序名dirname,filename = os.path.split(os.path.abspath(sys.argv[0])) inifilename = dirname+'/test.ini' #為什么這樣表述呢?config = configparser.ConfigParser()#test.ini 的內(nèi)容如上圖所示config.read(inifilename)#獲得num的值,整數(shù)num = config.getint('table','num')print(num) #8#獲得tablename的值,字符串tablename = config.get('table','tablename')print(tablename) #cs_forecast#獲得urlstr的值,字符串urlstr = config.get('city','urlstr')print(urlstr) #http://www.weather.com.cn/weather/%%s.shtml#獲得citystr的值,字符串citystr = config.get('city','citystr')print(citystr) # 北京,武漢,蘭州,長沙#獲取所有的selectionssections = config.sections()print(sections) # ['table', 'city']#獲取指定sections下的所有optionsoptions = config.options('table')print(options) # ['num', 'city']#判斷是否含有指定selection 或 optionprint(config.has_section('table')) # Trueprint(config.has_option('table', 'flag')) # False
除了ini配置文件讀取信息參數(shù)外,有時候根據(jù)業(yè)務場景的不同,還需要將有關信息寫入ini配置文件,以便下次需要的時候讀取。
import os, sysimport configparser#dirname:程序所在的目錄, filename: 程序名dirname,filename = os.path.split(os.path.abspath(sys.argv[0])) inifilename = dirname+'/test.ini'config = configparser.ConfigParser()#test.ini 的內(nèi)容如上圖所示config.read(inifilename)config.add_section('test_title') # 設置option的值config.set('test_title', 'key1', '1111111111') # 注意這里的selection一定要先存在!config.set('test_title', 'key2', '2222222222')config.remove_section('city') # 移除指定selectionconfig.remove_option('table', 'num') # 移除指定selection下的optionwith open(inifilename, 'w+') as f: config.write(f)
如果某個section已經(jīng)存在了,如上例,在寫入的時候不能夠再使用config.add_section('test_title’)這個函數(shù)了,這樣會報錯,所以,我們需要進行判斷,先判斷test_title是否存在,然后再進行操作。
if 'test_title' not in config.sections(): config.add_section('test_title')
這樣就可以在 test_title 這個section下面進行追加操作了。
閱讀完畢,誠邀您點擊一下“關注”按鈕,方便以后持續(xù)為您推送此類文章,同時也便于您進行討論與分享,您的支持是我們堅持創(chuàng)作的動力~~~