Python常用配置檔案ini、json、yaml讀寫總結

pythonputao發表於2020-12-09

開發專案時,為了維護一些經常需要變更的資料,比如資料庫的連線資訊、請求的url、測試資料等,需要將這些資料寫入配置檔案,將資料和程式碼分離,只需要修改配置檔案的引數,就可以快速完成環境的切換或者測試資料的更新,常用的配置檔案格式有ini、json、yaml等,下面簡單給大家介紹下,Python如何讀寫這幾種格式的檔案。

ini格式

ini 即 Initialize ,是Windows中常用的配置檔案格式,結構比較簡單,主要由節(Section)、鍵(key)和值(value)組成。每個獨立部分稱之為section,每個section內,都是key(option)=value形成的鍵值對。

在Python3中,使用自帶的 configparser 庫(配置檔案解析器)來解析類似於ini這種格式的檔案,比如config、conf。

ini讀取刪除操作

import configparser
#使用前,需要建立一個例項
config = configparser.ConfigParser()
# 讀取並開啟檔案
config.read('test2.ini',encoding='utf-8')

# 獲取sections
print(config.sections())
#['db', 'data']

# 獲取某section下的所有options
print(config.options('db'))
#['user', 'pwd', 'host', 'database', 'port']

# 獲取某section下指定options
print(config.get('db', 'user'))
# root

# 獲取section中所有的鍵值對
print(config.items('data'))
# [('admin_user', 'tong'), ('admin_pwd', '123456')]

#刪除整個section
config.remove_section('db')

#刪除section下的某個k
config.remove_option('db','host')

ini寫入操作

import configparser

config = configparser.ConfigParser()
config["url"] = {'url':"www.baidu.com"}  #類似於操作字典的形式

with open('example.ini', 'w') as configfile:

    config.write(configfile)  #將物件寫入檔案

json格式

JSON (JavaScript Object Notation) 是一種輕量級的資料交換格式,採用完全獨立於語言的文字格式,這些特性使json成為理想的資料交換語言,易於閱讀和編寫,同時易於機器解析和生成。關於json的使用,之前寫過一篇Python處理json總結,大家可以看下。

json格式示例:

{
  "name":"smith",
  "age":30,
  "sex":"男"
}

Python中使用內建模組 json 操作json資料,使用json.load()和json.dump方法進行json格式檔案讀寫:

# 讀取json
import json
with open('test1.json') as f:
    a = json.load(f)
print(a)

# 寫入json
import json
dic ={
    "name" : "xiaoming",
    "age" : 20,
    "phonenumber" : "15555555555"
}

with open("test2.json", "w") as outfile:
    json.dump(dic, outfile)

yaml格式

yaml全稱Yet Another Markup Language(另一種標記語言),它是一種簡潔的非標記語言,以資料為中心,使用空白,縮排,分行組織資料,解析成本很低,是非常流行的配置檔案語言。

yaml的語法特點:

  • 大小寫敏感

  • 使用縮排表示層級關係,縮排的空格數目不重要,只要相同層級的元素左側對齊即可

  • 縮排時不允許使用Tab鍵,只允許使用空格。

  • 字串不需要使用引號標註,但若字串包含有特殊字元則需用引號標註

  • 註釋標識為#

  • - 開頭的行表示構成一個陣列

yaml格式示例

case1:
 info:
  title: "正常登陸"
  url: http://192.168.1.1/user/login
  method: "POST"
 json:
  username: "admin"
  password: "123456"
 expected:
  status_code: 200
  content: "user_id"

yaml支援的資料結構有三種:

  • 物件:鍵值對的集合,又稱為對映(mapping)/ 雜湊(hashes) / 字典(dictionary)

  • 陣列:一組按次序排列的值,又稱為序列(sequence) / 列表(list)

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

Python中使用 pyyaml 處理yaml格式資料

使用前,需要進行安裝

pip install pyyaml

yaml檔案讀取

用python讀取yaml檔案,先用open方法讀取檔案資料,再通過load方法轉成字典。

import yaml
with open("testyaml.yaml", encoding='utf-8') as file:
    data = yaml.safe_load(file)
    print(data)
    print(data['case1']['json'])
    print(data['case1']['json']['username'])
import yaml
#定義一個字典

content = {
    'id': 1,
    'text': 'programming languages',
    'members': ['java', 'python', 'python', 'c', 'go', 'shell']
}

with open('test3.yaml', 'w', encoding='utf-8') as file:
    yaml.dump(content, file, default_flow_style=False, encoding='utf-8', allow_unicode=True)

寫入的資料帶中文,會出現亂碼,需要設定allow_unicode=True。

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,如有問題請及時聯絡我們以作處理

想要獲取更多Python學習資料可以加QQ:2955637827私聊或加Q群630390733大家一起來學習討論吧!

相關文章