专栏首页python3Python3 读取 toml 配置文件

Python3 读取 toml 配置文件

【吐槽】

    先吐槽一下其他几个配置文件。

  • ini:表达能力不够,比如不能表达列表等结构;没有官方注释符号,虽然一般以分号作为注释符号。
  • json:没有官方注释符号,虽然某些第三方包提供了注释结构。
  • yaml:语法比较复杂,可读性不太高。

toml 简介】

     TOML是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。TOML被设计为可以无二义性的转换为一个哈希表(Hash table)。

    官方中文介绍在这里:https://github.com/toml-lang/toml/tree/master/versions/cn

    walker 下面使用的第三方解析包是:https://pypi.org/project/toml/

【config.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 os
import sys
import toml
SrcRoot = r''
DstRoot = r''
#读取配置文件
def ReadConfig():
    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()

【cmd】

D:\Python3Project\test>python3 t.py
SrcRoot: D:\test\input
DstRoot: D:\test\output
Read config.toml successed!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Python3下不要版本号批量编译.py

    2、compileall — Byte-compile Python libraries

    py3study
  • Python实现Daemon(守护)进程

    我编写了两种,第一种是编写了一个程序,将其用setsid命令让其放入后台运行,第二种是直接fork()一个进程,在代码里将进程设置为后台启动。

    py3study
  • 类的组合

    py3study
  • 小朋友学C语言(12):判断

    (一) 先动手编写一个程序: #include <stdio.h> int main() { if(1) { printf("T...

    海天一树
  • Python | super函数是如何来继承的

    Py 2.x 和 Py 3.x 中有一个很大的区别就是类,无论是类的定义还是类的继承。Py 3.x 中类的继承可以直接使用 super() 关键字代替原来的 s...

    用户1634449
  • 给PHP开发者的九条建议

    本文只是个人从实际开发经验中总结的一些东西,并不是什么名言警句,写出来有两个目的:一是时刻提醒自己要按照这些知识点来写自己代码,二是为了分享,说不定对你有用呢?...

    wangxl
  • 机器学习笔试题精选(一)

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.n...

    红色石头
  • hdu1082

    @坤的
  • 如何让Sublime Text编辑器支持新的ABAP关键字

    版权声明:本文为博主汪子熙原创文章,未经博主允许不得转载。 https://jerry.bl...

    Jerry Wang
  • python 定制windows 开机启

    1:开机后等待12s等待网络连接,之后判断网络,如果还是连接不上,就放弃开机启动的项目。

    py3study

扫码关注云+社区

领取腾讯云代金券