tft每日頭條

 > 科技

 > python 常用配置文件解釋

python 常用配置文件解釋

科技 更新时间:2024-07-25 08:59:27

安裝軟件時,經常會見到後綴為.cfg、.ini的文件,一般我們不用管,隻要不删就行。因為這些是程序安裝、運行時需要用到的配置文件。但對開發者來說,這種文件是怎麼回事就必須搞清了。本文從.cfg文件的創建、編輯修改到使用等方面,進行解讀,幫助大家掌握配置文件。

python 常用配置文件解釋(不得不了解的.cfg配置文件)1

一、配置文件的作用

配置文件的作用是保存一些在程序運行時需用到的參數,在程序運行過程中,通過代碼讀取配置文件獲得參數,保障程序的正常運行。如果誤删了配置文件,代碼取不到數據,程序也就無法正常運行了。配置文件一般保存的參數有:

1)使用數據庫的程序,程序與數據庫的連接參數,常常被寫入配置文件讀取調用;

2)有登錄賬号、密碼的程序,登錄名及賬号信息一般也會寫入配置文件。當程序運行到登錄界面時,隻需讀取配置文件,就能對登錄信息進行判斷,而不必運行到主程序,提高運行效率。

3)桌面程序界面設置信息等

這裡需要注意的是,不是所有的程序都必須有配置文件。因為配置文件的作用說白了也就是單獨存儲數據,如果項目很小,用到的數據很少,就沒有弄配置文件的必要, 直接把數據寫在代碼裡就可以了。

python 常用配置文件解釋(不得不了解的.cfg配置文件)2

二、配置文件的後綴格式

很多人奇怪為什麼配置文件的後綴格式.cfg是什麼意思,而有時.ini、.xml、.dat格式文件也叫配置文件?其實,知道了配置文件的本質和項目開發習慣就明白了。首先,配置文件的本質就是文本文件,能直接用記事本打開、編輯。文件的後綴,可以是.txt,也可以根據自己的意願随便修改,比如改為.cfg,.ini等都是沒問題的。

雖然配置文件的後綴可以根據自己的喜好随意定,但也不是任何時候想改就改的。因為配置文件的後綴格式已經寫入到程序代碼裡了,如果中途修改後綴,而代碼裡還是原後綴格式,就會造成找不到配置文件導緻程序運行不了的後果。比如,原配置文件為cg.cfg,一般代碼裡會有這樣的讀取語句:

cp.read('source\cg.cfg')

如果将配置文件修改為cg.ini,則須修改代碼語句為:

cp.read('source\cg.ini')

否則,若還是cp.read('source\cg.cfg')語句,就找不到模配置文件,報錯。而我們安裝軟件時,是不可能改代碼的。所以,面對安裝包裡的配置文件,正确做法就是不管,不删不改不移動就行。

為提高代碼的通用性和可讀性,項目開發時會提前約定好固定的後綴作為配置文件的格式,這就是項目開發習慣的結果。所以現在一般隻要看到.cfg、.ini等後綴的文件,就知道這是配置文件。若突然換了個個性的後綴,就容易讓人蒙圈。

所以後綴.cfg沒有特殊的含義,隻是約定的習慣用法而已,隻不過不止約定了這一種,還約定了.ini、.dat、.xml等,所以.ini、.xml、.dat格式文件都叫配置文件

三、配置文件裡内容的格式

和文件後綴格式可以随便自定義不同,配置文件裡内容的格式要求很嚴格,内容樣式為:

[section] option = value ...

其中:section為節點,用中括号括起來;option為鍵,value為鍵對應的值,option= value構成鍵值對,一個鍵隻對應一個值,同一個section節點下option鍵不能重複出現

如下圖,節點(section)[rew]下出現了兩個相同的鍵(option)name:

python 常用配置文件解釋(不得不了解的.cfg配置文件)3

運行python讀取該文件代碼:cp.read('1.txt')時,會提示報錯:

configparser.DuplicateOptionError: While reading from '1.txt' [line 3]: option 'name' in section 'rew' already exists

意思是第3行的option'name'在節點section‘rew’裡已存在。

四、配置文件的創建、寫入數據

了解了配置文件的本質是文本文件,且後綴可随意更改的特點後,文件的創建和修改就簡單了。直接用記事本創建文件,按内容格式要求寫好數據後,将文件保存為後綴為.cfg或其他拟定的後綴格式文件即可。也可以直接用代碼方法:用open('confg.cfg', 'w')函數可以在當前文件夾下創建名為“confg.cfg”的文件,'w'參數代表可以向文件寫入數據,然後用write(f),将文件保存下來。如下面的代碼

from configparser import ConfigParser cp = ConfigParser() cp.add_section('test1') cp.set('test1', 'name', '張三') cp.set('test1', 'sn', '123456') with open('confg.cfg', 'w') as f: cp.write(f)

運行後即生成的了保存有兩條信息的confg.cfg文件,右鍵用記事本打開查看,結果為:

python 常用配置文件解釋(不得不了解的.cfg配置文件)4

五、配置文件的常用操作函數

上面我們創建并寫入了配置文件内容,有時,我們需要在程序運行過程中,根據用戶交互信息,自動修改配置文件信息,這就隻能用代碼了。python的ConfigParser模塊下有多個操作配置文件的函數,常用的有10個,具體如下:

1、read(file.cfg):讀取配置文件

from configparser import ConfigParser cp = ConfigParser() cp.read('confg.cfg')

2、set(section, name, value):新增項目(name:“李四”,sn:‘123’),新增時,節點(section)下不能存在為‘李四’的項目鍵(name),否則就變成了修改鍵對應的值,如下面第3條

cp.set('test1', '李四', '123')

3、set(section, name, value):将配置文件裡的“李四”對應sn修改為新sn“666”

cp.set('test1', '李四', '666') # 将原sn:123,該為新sn:666

4、remove(section, name):删除項目

cp.remove_section('test2') #如果文件裡沒有test2節點,就無法删除,會報錯,所以一般要先判斷是否存在該節點。

5、has_section(section):判斷是否存在節點

cp.add_section('test2')

6、add_section(section):增加節點

cp.add_section('test2')

注意:不能增加已經存在的section,為了避免出錯,可先判斷是否存在節點(section)

7、sections():得到所有的section,返回結果為列表

from configparser import ConfigParser cp = ConfigParser() cp.add_section('test1') cp.set('test1', 'name', '張三') cp.set('test1', 'sn', '123456') cp.add_section('test2') cp.set('test2', 'name', '張') cp.set('test2', 'sn', '123') with open('confg.cfg', 'w') as f: cp.write(f) cp.read('confg.cfg') print(cp.sections())

運行結果為:['test1', 'test2']

8、options(section) :得到section下的所有option (key值),返回結果為列表

from configparser import ConfigParser cp = ConfigParser() cp.read('confg.cfg') print(cp.options('test1'))

運行結果為:['name', 'sn']

9、items(section):得到section的所有鍵值對

from configparser import ConfigParser cp = ConfigParser() cp.read('confg.cfg') print(cp.items('test1'))

運行結果為:[('name', '張三'), ('sn', '123456')]

10、get(section, option):得到section中option的值,返回為string類型

from configparser import ConfigParser cp = ConfigParser() cp.read('confg.cfg') print(cp.get('test1', 'name'))

運行結果:張三

11、getint(section, option):得到section中的option值,返回為int類型

from configparser import ConfigParser cp = ConfigParser() cp.read('confg.cfg') print(cp.getint('test1', 'sn'),type(cp.getint('test1', 'sn')))

運行結果:123456 <class 'int'>

6、試用

了解了這些後,我們可以試着找一些軟件配置文件,打開看數據都是些什麼格式。比如,下圖是SQL SERVER安裝包裡帶的一個配置文件的内容,注意該配置文件後綴是.ini,用記事本打開查看:

python 常用配置文件解釋(不得不了解的.cfg配置文件)5

注意着裡面的第一行是分号開頭的字符串,在我們正常的python3,環境下讀取時會報錯,将分号改為python裡的注釋符即可。

異常錯誤處理

用ConfigParser模塊的read函數讀取配置文件時,偶爾會出現一種奇怪的錯誤,提示為

configparser.MissingSectionHeaderError:File contains no section headers,

具體是将配置文件的第一行讀取為:'锘縖sql_connect]\n',而實際是'[sql_connect]'。

這種錯誤很無語,很讓初次見到的人崩潰。其實,這種錯誤是因為windows讀取配置文件時,額外追加了亂碼信息導緻。如何消除亂碼,有人用字符替換,有人通過保存配置文件時修改編碼方式,逐一試過後,都沒起作用,看來不是特效藥。最後,找到了一個最簡單的辦法,重建一個同名的文件,将配置文件裡的内容複制粘貼過去就好。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved