提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

配置文件我用TOML!人性化,少出错!

  • 前言
  • 一、TOML是什么东东?
  • 二、如何使用TOML?
    • 1.安装TOML包
    • 2.TOML调用方法
  • 总结

前言

配置文件的使用由来已久,从.ini、XML、JSON、YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升。 接触到TOML是因为前几种都有其不方便的地方,具体就不解释了。

要写配置文件,关键就是要简单方便,还要不出错,这是TOML吸引我的地方。

废话少说,直接开干!


提示:本文的主要优点在于将toml文件的主要操作变成类,方便调用

一、TOML是什么东东?

TOML[Tom 的(语义)明显、(配置)最小化的语言]
为人而生的配置文件格式。
TOML 旨在成为一个语义明显且易于阅读的最小化配置文件格式。TOML 被设计成可以无歧义地映射为哈希表。TOML 应该能很容易地被解析成各种语言中的数据结构。
具体可访问官方网站https://toml.io/cn/

二、如何使用TOML?

1.安装TOML包

使用TOML首先要安装他的包,很小巧,很快就完成了。

pip install toml

2.TOML调用方法

将TOML做成一个类,方便调用,引用方法见main函数下的语句。

# -*- coding: utf-8 -*-
# 文件名:toml_config.py
# 首次使用请先:pip install toml
import toml
class Toml_Config:'''读写toml对象,实际就是个dict'''def __init__(self,toml_fileanme):self.t_dict = dict() # 创建空字典self.toml_file_path = toml_fileanmedef update(self, t_data):# 给toml文件添加配置self.t_dict.update(t_data)return self.t_dictdef write(self,t_data):# 写入到toml文件with open(self.toml_file_path, "w", encoding="utf-8") as fs:toml.dump(t_data, fs)def read(self):# 读取toml文件with open(self.toml_file_path, "r", encoding="utf-8") as fs:t_data = toml.load(fs)return t_datadef read_str(self,s_data):# 从字符串中解析TOML,返回一个字典对象或类的实例对象t_data = toml.loads(s_data, _dict=dict)return t_datadef read_dict(self,dict):# 将字典对象格式化成toml字符串t_data = toml.dumps(dict)return t_dataif __name__ == '__main__':# 引用示范import osBASE_DIR = os.path.dirname(os.path.abspath(__file__))toml_fileanme = "config.toml"toml_file_path = os.path.join(BASE_DIR, toml_fileanme)# 读写toml对象# 假定将本文件保存为toml_config.py,则在同目录引用时需要增加下面这行语句# from toml_configimport Toml_Configt = Toml_Config(toml_file_path)if 1:# 读取toml文件data = t.read()print('\n读取toml文件:\n',data)if 1:# 从dict读取为toml对象indicators = {'macd': {'fastperiod':12, 'slowperiod':26, 'signalperiod':9}}data = t.read_dict(indicators)print('\n从dict读取为toml对象:\n',data)if 1:# 更新toml数据print('\n更新toml数据前:\n',data)indicators = {'macd': {'fastperiod':48, 'slowperiod':104, 'signalperiod':36}}data = t.read_dict(indicators)data2 = t.update(indicators)print('\n更新toml数据后:\n',data2)if 1:# 从字符串读取为toml对象s_data = """[mysql]host     = "127.0.0.1"user     = "root"port     = 3306database = "test""""data = t.read_str(s_data)print('\n从字符串读取为toml对象:\n',data)if 1:# 将数据写入toml文件indicators = {'macd': {'fastperiod':12, 'slowperiod':26, 'signalperiod':9},'macd4': {'fastperiod':48, 'slowperiod':104, 'signalperiod':36},'rsi6':6,'rsi14':14,'rsi24':24,'kdj': {'N':9,'M1':3,'M2':3},'cci': {'timeperiod': 14}}t.write(indicators)data = t.read()print('\n数据写入toml文件:\n',data)

执行结果如下:

读取toml文件:{'rsi6': 6, 'rsi14': 14, 'rsi24': 24, 'macd': {'fastperiod': 12, 'slowperiod': 26, 'signalperiod': 9}, 'macd4': {'fastperiod': 48, 'slowperiod': 104, 'signalperiod': 36}, 'kdj': {'N': 9, 'M1': 3, 'M2': 3}, 'cci': {'timeperiod': 14}}从dict读取为toml对象:[macd]
fastperiod = 12
slowperiod = 26
signalperiod = 9更新toml数据前:[macd]
fastperiod = 12
slowperiod = 26
signalperiod = 9更新toml数据后:{'macd': {'fastperiod': 48, 'slowperiod': 104, 'signalperiod': 36}}从字符串读取为toml对象:{'mysql': {'host': '127.0.0.1', 'user': 'root', 'port': 3306, 'database': 'test'}}数据写入toml文件:{'rsi6': 6, 'rsi14': 14, 'rsi24': 24, 'macd': {'fastperiod': 12, 'slowperiod': 26, 'signalperiod': 9}, 'macd4': {'fastperiod': 48, 'slowperiod': 104, 'signalperiod': 36}, 'kdj': {'N': 9, 'M1': 3, 'M2': 3}, 'cci': {'timeperiod': 14}}

总结

写配置文件,本来算不上什么大事儿,但做过项目的人知道,这玩意儿还真马虎不得。一个易识读、易修改的配置文件,在开发初期尤为重要。所以我推荐TOML,而且这家伙官网还给了中文手册,给点个赞!

以下摘自官网:
TOML 以人为先
TOML 旨在成为一个最小化配置文件格式,具有如下优点:

  • 语义明显易于阅读
  • 能无歧义地映射为哈希表
  • 易于解析成各种语言中的数据结构

TOML 具备实用的原生类型

  • 键/值对
  • 数组
  • 内联表
  • 表数组
  • 整数 & 浮点数
  • 布尔值
  • 日期 & 时刻,带可选的时区偏移

TOML 受到广泛支持

  • TOML 已经拥有大多数当今使用的最流行的编程语言的实现:C、C#、C++、Clojure、Dart、Elixir、Erlang、Go、Haskell、Java、Javascript、Lua、Objective-C、Perl、PHP、Python、Ruby、Swift、Scala……以及更多。

希望对大家有帮助。

【TOML配置文件】配置文件我用TOML!人性化,少出错!相关推荐

  1. TOML简介及NSQD对TOML的使用

    1.什么是TOML? TOML的全称是 [Tom's Obvious Minimal Language],其作者是 GitHub联合创始人 . TOML的目标是成为一个极简的配置文件格式,被设计成可以 ...

  2. c语言解析toml文件,使用cpptoml 读取 TOML 格式配置文件

    1. 获取cpptoml 只需要 cpptoml.h . $ git clone https://github.com/skystrife/cpptoml.git 2. TOM配置 mysql.tom ...

  3. 使用json、yaml、toml作为配置文件,你知道他们的区别吗

    前言 配置文件,不言而喻,主要是我们进行项目和工程配置的文件. 如果是站在前端角度说的话,我们最常接触的就是 json以及 js类型的文件,这种形式的配置写法对前端非常友好,因为都是我们熟悉的 JS ...

  4. nginx php多域名配置文件,配置文件,nginx_nginx多站点配置,无法通过域名访问,使用ip访问会跳转到其中一个站点,配置文件,nginx - phpStudy...

    nginx多站点配置,无法通过域名访问,使用ip访问会跳转到其中一个站点 在一台服务器设置了Nginx多站点,但是访问这些站点的域名均无法访问,错误如下图: 通过ip会跳转到其中一个站点,具体表现为: ...

  5. Golang输出toml文件时保留原toml注释

    有这样一种使用场景,Golang从文件或字符串中读取toml数据并解析,然后进行相应的修改,最后重新写回到文件中,由于一般的toml库不会去特别处理注释,重新生成的toml文件中所有原始的注释都会丢失 ...

  6. 配置文件的读取-TOML

    前言 在C++的项目中,我们可以选择使用哪种配置文件?选择配置文件的两个依据可能是: 配置数据本身的复杂性. 应用程序的编程语言是否具有用于解析文件格式的现有强大库 具体可参考:Config File ...

  7. 常用配置文件-toml文件

    toml的目标是成为一种最小的配置文件格式,由于明显的语义,该格式易于阅读.toml旨在明确的映射到哈希表.toml应该易于解析解析为多重语言的数据结构. .toml文件的基本格式如下: [defau ...

  8. 【Go API 开发实战 6】基础 2:配置文件读取

    配置文件读取 本节核心内容 介绍 apiserver 所采用的配置解决方案 介绍如何配置 apiserver 并读取其配置,以及配置的高级用法 本小节源码下载路径:demo02 可先下载源码到本地,结 ...

  9. Python读写TOML文件

    文章目录 TOML介绍 Python读写TOML 安装toml解析包 函数说明 toml.load(f, _dict=dict) 参数 返回 异常 toml.loads(s, _dict=dict) ...

最新文章

  1. 尚国栋:金融风控贷款违约预测(天池学习赛)
  2. Java EE---使用Spring框架创建Department小项目
  3. “invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python”解决办法
  4. OPKG 软件包管理
  5. [Google Guava] 11-事件总线
  6. 破解CMOS SETUP密码诀窍
  7. opengl加载显示3D模型lxo类型文件
  8. Vue-Router的路由实例构造配置
  9. 信息学奥赛一本通 1059:求平均年龄 | OpenJudge NOI 1.5 01
  10. 【华为云实战开发】9.如何进行PHP项目的快速搭建并实现CICD?
  11. Python使用matplotlib.pyplot绘图时设置坐标轴刻度
  12. 值得收藏的130个神器网站
  13. 不可错过!普林斯顿陈丹琦最新《大语言模型理解》2022课程!全面讲述BERT、GPT、T5等大模型,附Slides...
  14. windows 下安装securecrt 绿色版
  15. 服务器显卡驱动重装系统,GPU显卡驱动重装
  16. java任务队列_java 任务队列
  17. php动态创建变量名,PHP中动态创建变量名(可变变量)
  18. 小学期学Java有感
  19. HTML网页内嵌入网页
  20. ES6 语法之 Set 与 Map 数据结构

热门文章

  1. Jmeter接口测试①——POST请求
  2. 社保html源码,社保查询流程图.html
  3. VM虚拟机安装系统出现Operating system not found或Directory “ZEBOOT” not found Error loading iMage错误,保姆级解决教程
  4. 游戏蓝牙耳机什么牌子好?游戏蓝牙耳机性价比品牌
  5. 原型与原型链的详细理解
  6. 自定义View球、渐变、旋转
  7. 打印冻结窗格怎么保证每页都有_EXCEL固定表头_冻结窗口以及打印的应用方法
  8. sqlserver之清空表内数据
  9. dsp处理浮点数_DSP中浮点数的表示方法
  10. 【网络流量识别】【深度学习】【一】IRNN和LSTM—网络入侵检测系统深度学习方法的比较分析(N-IDS):N-IDS 的深度学习