【TOML配置文件】配置文件我用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_fileanme

    def update(self, t_data):
        # 给toml文件添加配置
        self.t_dict.update(t_data)
        return self.t_dict

    def 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_data
    
    def read_str(self,s_data):
        # 从字符串中解析TOML,返回一个字典对象或类的实例对象
        t_data = toml.loads(s_data, _dict=dict)
        return t_data
    
    def read_dict(self,dict):
        # 将字典对象格式化成toml字符串
        t_data = toml.dumps(dict)
        return t_data
 
if __name__ == '__main__':
    
    # 引用示范
    import os
    BASE_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_Config
    t = 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     = 3306
        database = "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……以及更多。

希望对大家有帮助。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Node.js中,可以使用toml模块来解析和生成toml格式的配置文件,因此可以通过Node.js来实现点击修改toml格式的配置文件的功能。以下是一般的实现思路: 1. 创建一个API接口,用于接收来自客户端的修改请求,并将修改后的内容写入配置文件。 2. 在客户端使用Ajax或Fetch等技术,向服务器端发送修改请求。请求的参数可以包括要修改的配置项名称和修改后的值。 3. 在服务器端接收到修改请求后,使用toml模块读取配置文件的内容,并将修改后的内容写入到文件中。这里需要注意的是,要保证对文件的写入操作是安全的,需要进行一些权限控制和错误处理。 4. 返回修改结果给客户端,通常会返回一个布尔值或者一些错误信息,以便客户端进行下一步处理。 下面是一个简单的示例代码,用于修改toml格式的配置文件: ``` const fs = require('fs'); const toml = require('toml'); // 定义API接口,用于接收修改请求 app.post('/api/config', (req, res) => { const { key, value } = req.body; // 获取请求参数 // 读取配置文件 const config = toml.parse(fs.readFileSync('config.toml', 'utf8')); // 修改配置项的值 config[key] = value; // 将修改后的内容写入文件 fs.writeFileSync('config.toml', toml.stringify(config)); // 返回修改结果 res.json({ success: true }); }); ``` 需要注意的是,由于涉及到文件操作,需要特别小心防止文件损坏或数据丢失。因此,在实现过程中需要使用一些安全的技术和方法来保证文件的完整性和安全性,例如备份、加锁、权限控制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IT里的交易员

分享是一种快乐,打赏是一种肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值