当前位置: 首页 > 后端技术 > Python

Python3 读取 toml 配置文件(UTF-8-UTF-8-BOM)

时间:2023-03-26 13:54:03 Python

Python3 读取 toml 配置文件(UTF-8/UTF-8-BOM)♀?♀吐槽? ? 先吐槽一下其他几个配置文件。ini:表达能力不够,比如不能表达列表等结构;没有官方注释符号,虽然一般以分号作为注释符号。json:没有官方注释符号,虽然某些第三方包提供了注释结构。yaml:语法比较复杂,可读性不太高。toml 简介TOML是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。TOML被设计为可以无二义性的转换为一个哈希表(Hash table)。官方中文文档qbit 下面使用的第三方解析包是:https://pypi.org/project/toml/可以考虑使用基于 Rust 实现的 rtomlconfig.toml# 输入目录SrcRoot = 'D:\test\input'# 输出目录DstRoot = 'D:\test\output't.py#encoding: utf-8#author: walker#date: 2018-12-11#summary: 读取 UTF-8/UTF-8-BOM 格式的 toml 配置文件import osimport sysimport tomlSrcRoot = r''DstRoot = r''def ReadConfig(): r""" 读取配置文件 """ global SrcRoot, DstRoot cfgFile = 'config.toml' if not os.path.exists(cfgFile): input(cfgFile + ' not found') sys.exit(-1) with open(cfgFile, mode='rb') as f: content = f.read() if content.startswith(b'\xef\xbb\xbf'): # 去掉 utf8 bom 头 content = content[3:] dic = toml.loads(content.decode('utf8')) SrcRoot = dic['SrcRoot'].strip() if not os.path.exists(SrcRoot): print('Error: not exists %s' % SrcRoot) sys.exit(-1) print('SrcRoot: %s' % SrcRoot) DstRoot = dic['DstRoot'].strip() if not os.path.exists(DstRoot): print('Error: not exists %s' % DstRoot) sys.exit(-1) print('DstRoot: %s' % DstRoot) print('Read config.toml successed!') if __name__ == '__main__': ReadConfig()cmdD:\Python3Project\test>python3?t.pySrcRoot:?D:\test\inputDstRoot:?D:\test\outputRead?config.toml?successed!本文出自 qbit snap