十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

使用 TOML 文件管理配置的简要指南

使用 TOML 文件管理配置的简要指南 你是如何根据一组参数改变软件项目的行为的?您能够运用环境变量, 然而, 要是您期望参数里的复杂结构要如何去处理呢?采用 JSON 可不可以? 没错, 你能够采用。JSON 文件是不许可有评论的。你是怎样针对读者去描述你的参数的?答案是使用 TOML 配置文件。为什么要使用配置文件,为什么要使用 TOML?依靠配置文件, 是提取项目参数的不错方式所在。在与他人分享代码之际, 他们能确切知晓该于何处做出更改, 以此来对软件行为予以调整。举个例子, 假定您的网站代码库对多个主题予以支持, 设置您代码的其他人能够前往配置文件, 并且将主题变量改换为别的变量, 如此之举会比去到代码库, 以及在各式文件中编辑主题更为便利。不过呢, 要使得您的用户晓得可用的主题究竟是哪些, 您就得针对配置文件去加以评论。您能够表明您的网站支持“深色”主题, 支持“浅色”主题, 支持“流行”主题, 还支持“灰度”主题。JSON 文件存在不足, 原因在于它们不允许进行评论。环境文件是配置文件是一种误解。他们不是。即便在某种程度上能够选择于环境文件里存放数值, 然而其实际意图在于针对其余开发人员将私密信息予以隐匿。假定您持有数据库凭据以及 API 密钥, 把带有这些值的代码发布至诸如等公共云兴许是有坏处的, 所以我们运用环境变量去分隔它们。用于作存储的配置文件, 存有能让您愉悦地同其他开发人员分享的值。我们所探讨的主题选项, 是特别好的一个例证。为什么选择 TOML?TOML是个不错之选, 因它极为简易, 且大部分流行平台皆接纳它。例如, 那种流行起来的无头CMS平台, 会运用TOML文件去进行上传构建配置的操作。我们能够在这个配置性质的文件里面, 对节点环境加以配置, 对构建命令予以配置, 对输出目录等开展配置。另一个堪称不错的例子存在着, 运行器属于CI/CD管道的一部分, 它使得您能够于持续部署期间在管道里运行作业, 那您怎样对它进行配置呢? 您会用到TOML文件。于TOML文件里, 阁下能够告知运行当中的程序, 需执行多少并发作业, 日志级别为何, 侦听端口是多少, 以及诸多其他选项是什么。TOML 文件具备源自好多代码编辑器的语法高亮支持, 举例来说, 于, 我安装了“Even TOML”扩展 标点符号。TOML 文件是现代 项目结构的一大特色。什么是TOML文件?TOML, 也就是Toms所指的那种, 是一种配置文件格式, 易于读写, 它很小, 即便没有编程经验的人, 也能够轻松理解它。许多数据结构得到TOML支持 如键值对 数组 还有表 解析器库能把它们转化成 不同编程语言的本机数据结构。有着能够被大多数主流编程语言解析这个特性, 截至撰写这篇文章时, 超过40种针对语言情况拥有TOML解析器, 此列表里包含Java、C#、PHP以及C。这篇文章的重点是 中的 TOML 文件的使用。TOML 文件在项目里能够处在任何地方, 理想的所在之处是项目的根文件夹, 原因在于我们要对项目的配置进行编辑, 要是我们仅仅关注一个模块, 那么我们有能力把它转移到子文件夹当中。具有扩展名.toml的文件是TOML文件, 这是一个示例配置文件。# This is a TOML document title TOML Example [owner] name Tom Preston-Werner dob 1979-05-27T07:32:00-08:00 [database] enabled true ports [ 8000, 8001, 8002 ] data [ [delta, phi], [3.14] ] temp_targets { cpu 79.5, case 72.0 } [servers] [servers.alpha] ip 10.0.0.1 role frontend [servers.beta] ip 10.0.0.2 role backend从这个例子中可以学到很多东西。首先, 文件开端是以注释起始的。您能够借助添加 # 符号于配置文件的任意一处地方来创建注释。往后是进行赋值行动, 仿若您所目睹的那般, 这是极为简易的, 您能够运用u003d符号去命名键, 并且给它赋予相应的值。这些值能够是多种类型, 在此示例当中, 标题被赋予给一个字符串, 然而你能瞧见, DOB是一个, Ports键是一个列表, 数据是列表的列表, 目标是另一组键值对。TOML文件的一个关键事项是有逗号或者其他之类的, 于TOML范畴内时, 上面所说这般规定下所指明标题被号称成表, 其讲述的是个诸如这般形式的东西, 它由一组键值彼此相对组合而成的表。解析器库将使用此信息在其本机类型中创建高级键。稍后再谈。表也是能够呈现成多级状态的。就如同您于上面所给出的示例当中见识到的那般, alpha以及beta这两者乃在服务器的哈希表里面创建起来的另外两个哈希表。解析器库会将这些转换为嵌套字典。TOML支持解析器库, 该库可将许多其他数据类型转换为编程语言的本地变体。我们将使用名为 tomli 的 TOML 解析器库。如何在 中读取 TOML 文件。即将要推出的版本序号为3.11里, 存在着一个有着特定名称的标准库, 这个模块能够起到辅助作用, 可从字符串当中去读取TOML文件。可是, 针对所有别的版本3.6 以上, 我们能够运用名为 tomli 的外部数据包。我们能够依照如下方式从 PyPI 存储库进行 tomli 的安装。pip install tomli最先, 我们得导入模块。值得庆幸的是, 在3.11里标准模块与外部包都依照相同的API。所以我们能够有条件地导入它们, 犹如下面这样:try: import tomllib except ModuleNotFoundError: import tomli as tomllib现在,我们可以将任何 TOML 字符串转换为 原生变量。toml_str # This is a TOML document title TOML Example [owner] name Tom Preston-Werner dob 1979-05-27T07:32:00-08:00 [database] enabled true ports [ 8000, 8001, 8002 ] data [ [delta, phi], [3.14] ] temp_targets { cpu 79.5, case 72.0 } [servers] [servers.alpha] ip 10.0.0.1 role frontend [servers.beta] ip 10.0.0.2 role backend data tomllib.loads(toml_str) data # {title: TOML Example, owner: {name: Tom Preston-Werner, dob: datetime.datetime(1979, 5, 27, 7, 32, tzinfodatetime.timezone(datetime.timedelta(days-1, seconds57600)))}, database: {enabled: True, ports: [8000, 8001, 8002], data: [[delta, phi], [3.14]], temp_targets: {cpu: 79.5, case: 72.0}}, servers: {alpha: {ip: 10.0.0.1, role: frontend}, beta: {ip: 10.0.0.2, role: backend}}}在经过转换之后的示例里头, 我们能够看到, 我们所拥有的哈希表, 或者说是标题呈现为顶级键, 次要标题会产生转换, 进而变成嵌套字典。借助解析器库, 我们能够看到, 它在把 TOML 配置转化成原生数据类型这件事上, 已然做得相当卓越。其中二进制文件需将其打开, 我们还能够从文件里读取TOM文件, 并且使用加载。import tomli as tomllib with open(./config.toml, rb) as f: data tomllib.load(f) data # {title: TOML Example, owner: {name: Tom Preston-Werner, dob: datetime.datetime(1979, 5, 27, 7, 32, tzinfodatetime.timezone(datetime.timedelta(days-1, seconds57600)))}, database: {enabled: True, ports: [8000, 8001, 8002], data: [[delta, phi], [3.14]], temp_targets: {cpu: 79.5, case: 72.0}}, servers: {alpha: {ip: 10.0.0.1, role: frontend}, beta: {ip: 10.0.0.2, role: backend}}}为什么使用 TOML 而不是 YAML?广为使用、极具丰富功能的另一种配置文件格式是YAML, 两种文件格式都具备极为简单的语法, 然而, YAML 文件存在着有关于空格重要性的显著区别。于 YAML 里, 可借在带有缩进且为单独一行中键入列表项的方式来指定列表, 还能够创建带有更多缩进的嵌套列表。这可能会使非技术读者感到困惑。然而, 于TOML里, 空格并无作用。您去创建带有方括号的列表。倘若您觉得您的配置文件用户具备一定技术含量, 那您能够依据其他一些因素去挑选其一。比如说, 您能够思索部署项目的那个平台。要是处于某种情况或是另外的某种情况, 那就可以选取 TOML 文件。最后的想法能把配置参数提取出去的做法会助项目从出色转到出色状态。要是每当您有新部署需求之际, 您仅需在一个地方改动配置, 您的应用便会做出反应。做此操作, 您得需要一个配置文件。这篇文章讲了TOML文件, 还说了为啥它们很不错。您也能够用环境文件、JSON文件或者任意文本文档。然而TOML文件比起这些别的格式有着明显的优势。我们曾就运用库 tomli 去读取 TOML 文件展开过讨论, 放眼未来, 兴许我们无需借助外部库来使用 TOML, 3.11 附带了一个有着特定名称的标准模块。我们讨论了如何比较 TOML 和 YAML, 这是最后一步。YAML 是一个流行的存储配置的库。YAML 对复杂的配置选项有用, TOML 对初学者更友好, 虽然如此。
返回列表