python之配置文件


一、配置文件類型

1、YAML

2、TOML

3、JOSN

4、XML

5、INI

---目前主流的配置文件為:YAML,INI--為傳統的配置文件

---配置文件:

  一個配置文件由兩部分組成:注釋和內容

  注釋:用來解釋必要內容,說明作用

  內容:由鍵值對key-value的形式存儲

配置文件是用於配置計算機程序的參數和初始化設置的文件,如果沒有這些配置,程序可能無法執行

二、yaml配置文件

1、功能強大,簡潔,可表示多種數據類型,采用 .yaml格式。這是目前功能最強大的格式。

適用場景:多層級關系,數組,可定義常量(包括:整數,浮點數,字符串,NULL,日期,布爾,時間)

2、python有yaml配置的第三方庫,pyyaml,安裝命令:pip install pyyaml

3、yaml的基本語法

1)大小寫敏感

2)key后面的:與value之間需要空格

3)注釋#,與python一致

4)使用縮進表示層級關系

5)縮進時不允許使用tab鍵,只能使用空格

6)縮進的空格數無限制,同一層級的元素縮進相同即可

4、YAML 支持的數據結構有三種:

1、對象:鍵值對的集合,又稱為映射(mapping)/哈希(hashes)/字典(dictionary);

key: value

2、數組:一組按次序排列的值,又稱為序列(sequence)/列表(list);使用“-”區分序列/列表的一個元素

users: 

   -

  username:"hee"

  password:"1234"

   -

  username:"yyy"

  password:"123"

此處:key為users的value是一個序列,每個元素是個字典,"users":[{"username":"hee","password":"1234"},{"username":"yyy","password":"123"}]

3、純量(scalars):單個的、不可再分的值。字符串、布爾值、整數、浮點數、Null、時間、日期等;

5、yaml配置文件的解析

1)先安裝第三方庫 pip install pyyaml

import yaml

with open("h_yaml.yaml",encoding="utf-8") as f:

  data = yaml.load(f,Loader=yaml.SafeLoader)  #  Loader為安全加載,使用可去掉告警

print(data["users"][0]["username"])  # 輸出結果為 hee

解析后獲取內容使用字典列表獲取值的方法獲取

二、INI配置文件

1、INI配置文件是傳統的配置文件,由節、鍵、值組成。

節--section 分組

[section] 

參數(鍵=值)option

option=value (value不能加引號)

注釋

注解使用分號表示";"。在分號后面的文字,直到該行結尾都全部為注解。

2、INI配置文件格式很簡單,最基本的三個要素是:parameters,sections和comments。都是字符串形式

1)parameters:INI配置文件最基本的元素就是parameters,每一個parameter都是由option和value組成,中間用等號=連接,”name=hello”name為option,hello為value

2)sections:所有的patameter都是以section為單位結合在一起的,[seciton]獨占一行,不可重名,在[seciton]后的參數都屬於這個section

3)comments:在INI文件中注釋語句是以分號“;”開始的。所有的所有的注釋語句不管多長都是獨占一行直到結束的。在分號和行結束符之間的所有內容都是被忽略的。

例:INI配置文件

;默認配置

[default]

host=http://example.com

port=7788

;數據庫

[db]

host=http://yyy.example.com

port=3306

3、INI配置文件的解析

1)導入Configparser

2)創建Configparser對象,調用read()方法

3)獲取配置文件數據

from configparser import ConfigParser

parser = ConfigParser()

parser.read("hee.ini" enconding="utf-8")  # 此處不需要打開文件就可以read是因為ConfigParser的read方法封裝了open 

print(parser.get("default","host"))

print(parser.get("db","host"))

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM