Python 3 tomlプロファイル(UTF-8/UTF-8-BOM)を読み込む

1964 ワード

突っ込む
まず他のいくつかのプロファイルにツッコミを入れます.
  • ini:表現能力が足りない、例えばリストを表現できないなどの構造;公式コメント記号はありませんが、一般的にはセミコロンをコメント記号として使用します.
  • json:公式注釈記号はありませんが、一部のサードパーティパケットは注釈構造を提供しています.
  • yaml:文法が複雑で、可読性があまり高くありません.

  • tomlの概要
    TOMLは、2013年に創設された元GitHub CEO、トムPreston-Wernerの言語で、小規模で使いやすい意味化されたプロファイルフォーマットを目指しています.TOMLは,ハッシュテーブル(Hash table)に無意味に変換できるように設計した.
  • 公式中国語ドキュメント
  • 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():
        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()

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

    本文はwalker snapshotから