广告
返回顶部
首页 > 资讯 > 后端开发 > Python >使用 Python 解析配置文件格式
  • 543
分享到

使用 Python 解析配置文件格式

Python解析配置文件Python配置文件 2022-06-02 22:06:20 543人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

第一步是选择配置文件的格式:INI、JSON、YAML 或 TOML。 有时,程序需要足够的参数,将它们全部作为命令行参数或环境变量既不让人愉快也不可行。 在这些情况下,你将需要使用配置文件。 有几种流行的配置文件格

第一步是选择配置文件的格式:INI、JSON、YAML 或 TOML。

有时,程序需要足够的参数,将它们全部作为命令行参数或环境变量既不让人愉快也不可行。 在这些情况下,你将需要使用配置文件。

有几种流行的配置文件格式。其中包括古老的(虽然有时定义不明确)INI 格式,虽然流行但有时难以手写的 jsON 格式,使用广泛但有时在细节方面令人意外的 YAML 格式,以及很多人还没有听说过的最新出现的 TOML。

你的首要任务是选择一种格式,然后记录该选择。解决了这个简单的部分之后就是时候解析配置了。

有时,在配置中拥有一个与“抽象“数据相对应的类是一个不错的想法。因为这段代码不会对配置做任何事情,所以这是展示解析逻辑最简单的方式。

想象一下文件处理器的配置:它包括一个输入目录、一个输出目录和要提取的文件。

配置类的抽象定义可能类似于:


from__future__import annotations

import attr
 
@attr.frozen
class Configuration:
 @attr.frozen
 class Files:
input_dir:str
output_dir:str
files: Files
 @attr.frozen
 class Parameters:
patterns: List[str]
parameters: Parameters

为了使特定于格式的代码更简单,你还需要编写一个函数来从字典中解析此类。请注意,这假设配置将使用破折号,而不是下划线。 这种差异并不少见。


def configuration_from_dict(details):
    files = Configuration.Files(
        input_dir=details["files"]["input-dir"],
        output_dir=details["files"]["output-dir"],
    )
    parameters = Configuration.Paraneters(
        patterns=details["parameters"]["patterns"]
    )
    return Configuration(
        files=files,
        parameters=parameters,
    )

JSON

JSON(javascript Object Notation)是一种类似于 JavaScript 的格式。

以下是 JSON 格式的示例配置:


json_config = """
{
    "files": {
        "input-dir": "inputs",
        "output-dir": "outputs"
    },
    "parameters": {
        "patterns": [
            "*.txt",
            "*.md"
        ]
    }
}
"""

解析逻辑使用 json 模块将 JSON 解析为 python 的内置数据结构(字典、列表、字符串),然后从字典中创建类:


import json
def configuration_from_json(data):
    parsed = json.loads(data)
    return configuration_from_dict(parsed)

INI

INI 格式,最初只在 windows 上流行,之后成为配置标准格式。

这是与 INI 相同的配置:


ini_config="""
[files]
input-dir = inputs
output-dir = outputs
 
[parameters]
patterns = ['*.txt', '*.md']
"""

Python 可以使用内置的 configparser 模块解析它。解析器充当类似  dict 的对象,因此可以直接传递给  configuration_from_dict :


import configparser
 
def configuration_from_ini(data):
parser=configparser.ConfigParser()
parser.read_string(data)
 return configuration_from_dict(parser)

YAML

YAML(Yet Another Markup Language)是 JSON 的扩展,旨在更易于手动编写。为了实现了这一点,部分原因是有一个很长的规范。

以下是 YAML 中的相同配置:


yaml_config = """
files:
  input-dir: inputs
  output-dir: outputs
parameters:
  patterns:
  - '*.txt'
  - '*.md'
"""

要让 Python 解析它,你需要安装第三方模块。最受欢迎的是 PyYAML ( pip install pyyaml )。 YAML 解析器还返回可以传递给  configuration_from_dict 的内置 Python 数据类型。但是,YAML 解析器需要一个字节流,因此你需要将字符串转换为字节流。


import io
import yaml
def configuration_from_yaml(data):
    fp = io.StringIO(data)
    parsed = yaml.safe_load(fp)
    return configuration_from_dict(parsed)

TOML

TOML(Tom's Own Markup Language)旨在成为 YAML 的轻量级替代品。其规范比较短,已经在一些地方流行了(比如 Rust 的包管理器 CarGo 就用它来进行包配置)。

这是与 TOML 相同的配置:


toml_config= """
[files]
input-dir = "inputs"
output-dir = "outputs"
 
[parameters]
patterns = [ "*.txt", "*.md",]
"""

为了解析 TOML,你需要安装第三方包。最流行的一种被简单地称为 toml 。 与 YAML 和 JSON 一样,它返回基本的 Python 数据类型。


import toml
def configuration_from_toml(data):
    parsed = toml.loads(data)
    return configuration_from_dict(parsed)

总结

选择配置格式是一种微妙的权衡。但是,一旦你做出决定,Python 就可以使用少量代码来解析大多数流行的格式。

到此这篇关于使用 Python 解析配置文件格式的文章就介绍到这了,更多相关Python 解析配置文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 使用 Python 解析配置文件格式

本文链接: https://www.lsjlt.com/news/11077.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 使用 Python 解析配置文件格式
    第一步是选择配置文件的格式:INI、JSON、YAML 或 TOML。 有时,程序需要足够的参数,将它们全部作为命令行参数或环境变量既不让人愉快也不可行。 在这些情况下,你将需要使用配置文件。 有几种流行的配置文件格...
    99+
    2022-06-02
    Python 解析配置文件 Python 配置文件
  • 阿里云服务器完整配置文件格式解析
    阿里云服务器是一种强大的云计算服务,它提供了灵活的配置选项和丰富的功能。对于使用阿里云服务器的用户来说,了解其完整配置文件的格式非常重要。本文将介绍阿里云服务器完整配置文件的格式,并提供一些示例来帮助读者更好地理解。完整配置文件格式阿里云...
    99+
    2023-12-27
    阿里 文件格式 完整
  • 怎么用Python解析toml配置文件
    举个例子有了 ini 和 yaml,相信 toml 学习来也很简单,先直接看一个例子吧。import toml config = """ title = "toml 小栗子" [owne...
    99+
    2023-05-21
    Python toml
  • Python中怎么解析配置文件
    这篇文章将为大家详细讲解有关Python中怎么解析配置文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在程序中使用配置文件来灵活的配置一些参数是一件很常见的事情,配置文件的解析并不复杂,在...
    99+
    2023-06-17
  • Mysql 文件配置解析
    目录client 端配置mysqld 端配置其他设置sql_mode总结前言: mysql数据库在日常工作开发中经常用到的存储设备, 之前已经分享了面试过程中经常被问到的mysql优...
    99+
    2022-11-13
  • Redis配置文件解析
    Redis概述:    是一个基于Key-Value的持久化数据库存储,支持丰富的数据类型,用C语言编写,可基于内存又可持久化的日志型、Key-Value数据库,并提...
    99+
    2022-10-18
  • 如何使用 Python 解析 Spring 框架中的配置文件?
    Spring 框架是一个广泛使用的 Java 应用程序框架,它的主要特点是将业务逻辑与底层代码分离。在 Spring 中,应用程序的配置文件扮演着至关重要的角色,它们描述了应用程序的各种设置和配置,如数据库连接、日志设置、Web 应用程序上...
    99+
    2023-09-04
    文件 关键字 spring
  • Spring Boot 配置文件类型properties 格式与yml 格式
    目录一 配置文件类型二 配置文件2.1 核心配置文件2.1.1 bootstrap.yml(bootstrap.properties)2.1.2 application.yml(ap...
    99+
    2022-11-13
  • python解析基于xml格式的日志文件
    大家中午好,由于过年一直还没回到状态,好久没分享一波小知识了,今天,继续给大家分享一波Python解析日志的小脚本。 首先,同样的先看看日志是个啥样。 都是xml格式的,是不是看着就头晕了??没事,我们先...
    99+
    2022-06-04
    格式 文件 日志
  • ASP.NET CORE读取json格式配置文件
    目录一、在Startup类中读取json配置文件1、使用Configuration直接读取2、使用IOptions接口1、定义实体类2、修改json文件3、在StartUp类里面配置...
    99+
    2022-11-13
  • SpringBoot配置文件格式详细介绍
    目录一、application.properties配置文件二、yml和yaml配置文件配置格式(1)普通属性(2)数组属性(3)注意事项idea添加配置文件三、生效优先级一、app...
    99+
    2022-11-13
  • Android中怎么使用pull方式解析xml格式文件
    这篇文章将为大家详细讲解有关Android中怎么使用pull方式解析xml格式文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体如下:<xml version="...
    99+
    2023-05-30
    android pull xml
  • python中解析json格式文件的方法示例
    前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于JavaScript(Standard ECMA-262 3rd Edition - Decembe...
    99+
    2022-06-04
    示例 格式文件 方法
  • python配置文件的使用
    将所有的代码和配置都变成模块化可配置化,这样就提高了代码的重用性,不再每次都去修改代码内部,这个就是我们逐步要做的事情,可配置化 模块:from configparser import ConfigParser configparser是P...
    99+
    2023-01-31
    配置文件 python
  • Python解析toml配置文件的方法分享
    目录楔子举个例子注释键值对字符串整数浮点数布尔值日期数组表行内表表数组楔子 上一篇文章我们介绍了 yaml,虽然 yaml 的表达能力已经很丰富了,但 GitHub 觉得还是不够优雅...
    99+
    2022-11-11
  • Linux DNS 解析与配置 nslookup使用 与 /etc/resolv.conf文件的配置
    Linux DNS 解析与配置 序 当我接收到一批新的服务器时,尝试连接外网,比如访问百度的首页: curl www.baidu.com 发现报错,不能解析正确的主机名。这个其实就是主机在解析主机名时没能正确发现对应的主机的 ip。当...
    99+
    2023-12-25
    linux 服务器 运维
  • mysql配置文件my-small.cnf解析,汉文翻译,配置
    # Example MySQL config file for small systems.#数据库最小系统配置文件样例# T...
    99+
    2022-10-18
  • 全面解析SpringBoot配置文件
    目录1.文件类型1.1properties1.2yaml简介基本语法数据类型举例2.配置提示1.文件类型 1.1properties 同以前的properties用法。 1.2yam...
    99+
    2022-11-12
  • Python实现解析yaml配置文件的示例详解
    目录楔子字典数组标量引用生成 yaml 文件楔子 前面我们介绍了 ini 格式的配置文件,本次来看看 yaml,它的表达能力相比 ini 更加的强大。yaml 文件以 .yml 结尾...
    99+
    2022-11-11
  • Python实现解析ini配置文件的示例详解
    目录楔子ini 文件特殊格式小结楔子 在开发过程中,配置文件是少不了的,只不过我们有时会将 py 文件作为配置文件(config.py),然后在其它的模块中直接导入。这样做是一个好主...
    99+
    2022-11-11
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作