【Python】常用配置文件汇总(INI、XML、JSON、YAML、PY)

时间:2025-04-05 08:18:41

文章目录

  • 引言
  • INI
  • XML
  • JSON
  • YAML????
  • PY????
  • 总结
  • 提示
  • 仓库
  • 参考


引言

配置文件常为程序运行提供参数,为参数的统一管理提供便利。本文以Python语言为例,讲解各种配置文件的用法。

INI

INI取自英文initialization(初始)的首字缩写,常常使用在Windows操作系统上,由节、键、值组成。节用[section]表示,键值用=连接,注释用;,不同节间一般用空行分隔。


优点

面向大众,简洁易懂,非专业人员也能看懂。

缺点

无法表现数组、层级关系等复杂的数据结构。


[params]
a=1
b=2

test_ini.py

import configparser


def test_ini():
    cf = configparser.ConfigParser()
    cf.read('')
    a = cf['params']['a']
    b = cf['params']['b']
    print(a, b)


if __name__ == '__main__':
    test_ini()

XML

XML(Extensible Markup Language)为可拓展标记语言,是一种用于标记电子文件使其具有结构性的标记语言,常被用于简化Internet的文档信息传输。类似于HTML,由多个带层次结构的标签组成。文档的首行是声明语句,内容由标签组成,注释用法同HTML


优点

相比于INI来说,能表示非常复杂的层级关系。

缺点

太冗余了~阅读体验不佳,不适合作配置文件。


<?xml version="1.0"?>
<params>
    <a>1</a>
    <b>2</b>
</params>

test_xml.py

import xml.etree.ElementTree as ET


def test_xml():
    tree = ET.parse('')
    root = tree.getroot()
    a = root[0].text
    b = root[1].text
    print(a, b)


if __name__ == '__main__':
    test_xml()

JSON

JSON(JavaScript Object Notation,JS对象表示法)以易于让人阅读的文字为基础,用来传输由属性值或者序列性的值组成的数据对象。JSON的数据表示类似于Python的字典,解决了XML冗余的问题,展示给用户更直观的数据结构。


优点

比 XML 更简洁,阅读体验更佳。

缺点

双引号太多,不适合做配置文件。


{
    "params": {
        "a": 1,
        "b": 2
    }
}

test_json.py

import json


def test_json():
    data = json.load(open(''))
    a = data['params']['a']
    b = data['params']['b']
    print(a, b)


if __name__ == '__main__':
    test_json()

YAML????

YAML的可读性比JSON更好,键值对不用加引号,视觉效果上更舒适。参考了Python的设计,注释采用#号,层级关系用缩进表示。


优点

对JSON的进一步简化。

缺点

暂时没有发现什么缺点。


params:
  a: 1
  b: 2

test_yaml.py

import yaml


def test_yaml():
    data = yaml.load(open(''), Loader=yaml.FullLoader)
    a = data['params']['a']
    b = data['params']['b']
    print(a, b)


if __name__ == '__main__':
    test_yaml()

PY????

如果是使用Python编程,PY文件不失为一种好的选择。PYPython源码后缀,在PY文件里面定义字典可充当程序运行的配置文件。


优点

Python内部字典对象,无需解析,直接调用。

缺点

相比于YAML来说略显冗余,因为键需要引号。


params = {
    'a': 1,
    'b': 2
}

test_py.py

from config import params


def test_py():
    a = params['a']
    b = params['b']
    print(a, b)


if __name__ == '__main__':
    test_py()

总结

就使用Python语言编程的用户来说,个人强烈推荐使用PYYAML充当配置文件。PY里面定义的字典变量无需解析,可以直接调用。YAML的数据表示非常简洁直观,同时也参考了Python语言设计的思想,更适合于Python用户。

提示

对于更加复杂的任务,命令行参数解析搭配配置文件使用更佳喔。例如深度学习训练过程中,如果有多个训练任务,那么就需要写多个配置文件,你只需在命令行参数里面传入配置文件所在的路径,即可实现不同训练任务的切换。

仓库

/XavierJiezou/python-config-file

参考

/wiki/INI文件
/wiki/XML
/wiki/JSON
/wiki/YAML