首页 > 编程知识 正文

python之常用模块ymal(Python的模块)

时间:2023-12-18 19:07:41 阅读:317363 作者:VMTH

本文目录一览:

Python Yaml配置工具

【GiantPandaCV导语】深度学习调参过程中会遇到很多参数,为了完整保存一个项目的所有配置,推荐使用yaml工具进行配置。

Yaml是可读的数据序列化语言,常用于配置文件。

支持类型有:

语法特点:

安装用命令:

举个例子:

注意:关键字不能重复;不能使用tab,必须使用空格。

处理的脚本:

输出结果:

这个警告取消方法是:添加默认loader

保存:

支持的类型:

python中四种配置文件

常用的配置文件后缀是.ini、.conf、.py,当然还有使用.json、.txt的,推荐使用常用的.ini、.py,配置文件的名字一般是config便于理解和使用。

ini配置文件,这类配置文件我们使用内置configparser库来使用,它可以实现配置文件的写入、更新、删除、读取等操作非常方便,建议使用这种方式。

新建一个config.ini的配置文件内容如下,编码格式要是 utf-8 以免出错。:

其中[]中的是section节点,该节点下的等式是option即键=值

然后每一行写一个option ,每个选项就是一个option。直接写名字,后面加 " = " 再加上它的值就行,字符串的表示不要加引号,否则引号也会被解析出来。

可以在配置文件中加入注释 ,但是注释必须是单独的一行,且以 “#” 开头。只是每次运行时不会读入注释,只要运行一次,写入文件后,所有的注释都会消失。

config.json文件

使用python内置的 json 标准库进行解析ini文件。

load() 从json文件中读取json格式数据

loads() 将字符串类型数据转化为json格式数据

dump() 将json格式数据保存到文件

dumps() 将json格式数据保存为字符串类型

TOML的语法广泛地由key = "value"、[节名]、#注释构成。

支持以下数据类型:字符串、整形、浮点型、布尔型、日期时间、数组和图表。

config.toml文件

使用外部库 toml 解析toml文件。

安装:pip install toml

读取文件

安装:

YAML是目前最推荐的配置文件格式。优秀的配置文件标准它几乎都有:

容易阅读和修改,支持注释。

支持丰富的数据类型。

不同格式的明确表达。

yaml使用时需要注意:

yaml强制缩进。虽然不规定具体缩进几个空格,但是同一级的内容要保持相同的缩进。

冒号后面一定要加空格, 否则无法解析。

python解析 yaml 可以使用pyyaml库,操作和标准的文件操作非常类似:

得到的data就是解析后的数据,在python当中,它是一个嵌套的字典:

想获取某一项配置,再通过字典的操作获取:

config.yaml文件

读取

python常用函数包有哪些?

一些python常用函数包:

1、Urllib3

Urllib3是一个 Python 的 HTTP 客户端,它拥有 Python 标准库中缺少的许多功能:

线程安全

连接池

客户端 SSL/TLS 验证

使用分段编码上传文件

用来重试请求和处理 HTTP 重定向的助手

支持 gzip 和 deflate 编码

HTTP 和 SOCKS 的代理支持

2、Six

six 是一个是 Python 2 和 3 的兼容性库。这个项目旨在支持可同时运行在 Python 2 和 3 上的代码库。它提供了许多可简化 Python 2 和 3 之间语法差异的函数。

3、botocore、boto3、s3transfer、awscli

Botocore是 AWS 的底层接口。Botocore是 Boto3 库(#22)的基础,后者让你可以使用 Amazon S3 和 Amazon EC2 一类的服务。Botocore 还是 AWS-CLI 的基础,后者为 AWS 提供统一的命令行界面。

S3transfer(#7)是用于管理 Amazon S3 传输的 Python 库。它正在积极开发中,其介绍页面不推荐人们现在使用,或者至少等版本固定下来再用,因为其 API 可能发生变化,在次要版本之间都可能更改。Boto3、AWS-CLI和其他许多项目都依赖s3transfer。

4、Pip

pip是“Pip Installs Packages”的首字母递归缩写。

pip很容易使用。要安装一个包只需pip install package name即可,而删除包只需pip uninstall package name即可。

最大优点之一是它可以获取包列表,通常以requirements.txt文件的形式获取。该文件能选择包含所需版本的详细规范。大多数 Python 项目都包含这样的文件。

如果结合使用pip与virtualenv(列表中的 #57),就可以创建可预测的隔离环境,同时不会干扰底层系统,反之亦然。

5、Python-dateutil

python-dateutil模块提供了对标准datetime模块的强大扩展。我的经验是,常规的Python datetime缺少哪些功能,python-dateutil就能补足那一块。

6、Requests

Requests建立在我们的 #1 库——urllib3基础上。它让 Web 请求变得非常简单。相比urllib3来说,很多人更喜欢这个包。而且使用它的最终用户可能也比urllib3更多。后者更偏底层,并且考虑到它对内部的控制级别,它一般是作为其他项目的依赖项。

7、Certifi

近年来,几乎所有网站都转向 SSL,你可以通过地址栏中的小锁符号来识别它。加了小锁意味着与该站点的通信是安全和加密的,能防止窃听行为。

8、Idna

根据其 PyPI 页面,idna提供了“对 RFC5891 中指定的应用程序中国际化域名(IDNA)协议的支持。”

IDNA的核心是两个函数:ToASCII和ToUnicode。ToASCII会将国际 Unicode 域转换为 ASCII 字符串。ToUnicode则逆转该过程。在IDNA包中,这些函数称为idna.encode()和idna.decode()

9、PyYAML

YAML是一种数据序列化格式。它的设计宗旨是让人类和计算机都能很容易地阅读代码——人类很容易读写它的内容,计算机也可以解析它。

PyYAML是 Python 的YAML解析器和发射器,这意味着它可以读写YAML。它会把任何 Python 对象写成YAML:列表、字典,甚至是类实例都包括在内。

10、Pyasn1

像上面的IDNA一样,这个项目也非常有用:

ASN.1 类型和 DER/BER/CER 编码(X.208)的纯 Python 实现

所幸这个已有数十年历史的标准有很多信息可用。ASN.1是 Abstract Syntax Notation One 的缩写,它就像是数据序列化的教父。它来自电信行业。也许你知道协议缓冲区或 Apache Thrift?这就是它们的 1984 年版本。

11、Docutils

Docutils是一个模块化系统,用来将纯文本文档处理为很多有用的格式,例如 HTML、XML 和 LaTeX 等。Docutils能读取reStructuredText格式的纯文本文档,这种格式是类似于 MarkDown 的易读标记语法。

12、Chardet

你可以用chardet模块来检测文件或数据流的字符集。比如说,需要分析大量随机文本时,这会很有用。但你也可以在处理远程下载的数据,但不知道用的是什么字符集时使用它。

13、RSA

rsa包是一个纯 Python 的 RSA 实现。它支持:

加密和解密

签名和验证签名

根据 PKCS#1 1.5 版生成密钥

它既可以用作 Python 库,也能在命令行中使用。

14、Jmespath

JMESPath,发音为“James path”,使 Python 中的 JSON 更容易使用。它允许你声明性地指定如何从 JSON 文档中提取元素。

15、Setuptools

它是用于创建 Python 包的工具。不过,其文档很糟糕。它没有清晰描述它的用途,并且文档中包含无效链接。最好的信息源是这个站点,特别是这个创建 Python 包的指南。

16、Pytz

像dateutils一样,这个库可帮助你处理日期和时间。有时候,时区处理起来可能很麻烦。幸好有这样的包,可以让事情变得简单些。

17、Futures

从 Python 3.2 开始,python 提供current.futures模块,可帮助你实现异步执行。futures 包是该库适用于 Python 2 的 backport。它不适用于 Python3 用户,因为 Python 3 原生提供了该模块。

18、Colorama

使用 Colorama,你可以为终端添加一些颜色:

更多Python知识请关注Python自学网

Python 自动化处理 Yaml 文件-

Yaml文件内容—示例1:

Yaml文件内容—示例2:

从上述示例文件内容可以看到 Yaml 数据结构:

1). 对象:键值对的集合(简称 "映射或字典")

例如:family 和 address 这两个对象后面分别有对应的键值对集合。

2). 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔

例如:

family 对象中的 key 为 name 与其对应的 value 值 Smile_Family 之间是使用空格分隔的。

address 对象中的 key 为 province 与其对应的 value 值 BeiJing 之间是使用空格分隔的。

3). 数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔

例如:

parents 中的 John 和 Jane

children 中的 Lily 和 Frank

4). 纯量(scalars):单个的、不可再分的值。例如:字符串、bool值、整数、浮点数、时间、日期、null等

None值可用null也可用 ~ 表示;

yaml文件内容如下:

Python解析输出为:

这个例子输出一个字典,其中value包括所有基本类型

Yaml文件内容如下:

Python解析输出为:

Yaml文件内容如下:

Python输出为:

如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号。

这里要注意单引号和双引号的区别:

单引号中的特殊字符转到 Python 会被转义,也就是到最后是原样输出;

双引号不会被 Python 转义,到最后是输出了特殊字符;

Yaml文件内容如下:

Python输出:

YAML 文件介绍

YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。

YAML 参考了其他多种语言,包括:XML、C语言、Python、Perl 以及电子邮件格式 RFC2822。

YAML 发布与 2001 年,之前并不出名,现在逐渐开始流行。测试圈中,主要应用于自动化测试过程,用来进行数据驱动的数据存储载体。

基本语法规则(很接近 Python 的语法规则):

支持的数据格式:

以下是 YAML 数据格式的示例:

对象

转换为Python字典格式为

YAML也支持另一种对象的写法,将所有的键值对写成一个行内对象

转换为Python字典格式为

数组

一组连词线开头的行,构成一个数组

转换为Python

也可以通过缩进空格来表示多维数组

转换为Python的列表

当然,也可以采用行内表示法

转换为Python

纯量

纯量是最基本的、不可再分的值。 以下数据类型都是常见的纯量。

纯量一般表示如下

转换为Python

yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。