Python实用模块推荐2:pyyaml、qrcode、tinydb

YAML(Yet Another Markup Language)是一种标记语言,类似XML,用于项目配置文件的书写。它语法简单,大小写敏感,使用缩进表示层级关系,可以在配置中穿插注释(这点完胜json)。
YAML中的数据结构
对象

键值对的集合,又称映射、哈希

数组

一组按顺序排列的值,又称列表,是由一组连词线(-)开头的行

纯量

单个的、不可再分的值,如字符串、布尔值、整数等

安装pyyaml

pip install pyyaml

示例配置文件test.yaml

PROJECT:
MYSQL:
ip: 127.0.0.1
port: 3306
user: xgx
password: xgx
database: far
tablename: attendance
encoding: utf8
NTP:
ip: 127.0.0.1
port: 123

import yaml
f = open(‘test.yaml’, encoding = ‘utf-8’😉
# 读取用load,保存用dump
conf = yaml.load(f)
print(type(conf))
print(conf[‘PROJECT’])
print(conf[‘PROJECT’][‘NTP’][‘ip’])
<class ‘dict’>
{‘MYSQL’: {‘ip’: ‘127.0.0.1’, ‘port’: 3306, ‘user’: ‘xgx’, ‘password’: ‘xgx’, ‘database’: ‘far’, ‘tablename’: ‘attendance’, ‘encoding’: ‘utf8’}, ‘NTP’: {‘ip’: ‘127.0.0.1’, ‘port’: 123}}
127.0.0.1

qrcode

qrcode是一个生成二维码的第三方库
安装qrcode

pip install qrcode

安装过程中,同时会安装qr这个命令行工具,它可以帮助快速生成二维码,具体可以通过qr –help来查看使用方法
代码示例

import qrcode
# 最简单的生成方法
img = qrcode.make(‘https://xugaoxiang.com’😉
# 复杂点的方法,即有更多的参数控制; version取值1~40,表示二维码的大小,1最小为21×21像素;error_correction表示纠错百分比,ERROR_CORRECT_L对应7%,除此之外还可以取值ERROR_CORRECT_M(15%),ERROR_CORRECT_Q(25%),ERROR_CORRECT_H(30%)
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
qr.add_data(‘https://xugaoxiang.com’😉
qr.make(fit=True)
# 填充色及背景色
img = qr.make_image(fill_color=”black”, back_color=”white”😉
# save it
img.save(‘qrcode.png’😉

tinydb

tinydb是一个纯python编写且无第三方依赖的轻量级的面向文档的数据库,适合在中小型应用中使用。
安装tinydb

pip install tinydb

示例代码

from tinydb import TinyDB, Query
db = TinyDB(‘test.json’😉
# 插入操作
db.insert({‘name’:’xgx’, ‘sex’:’male’})
db.insert({‘name’:’djstava’, ‘sex’:’male’})
# 这是一条新的记录,而不是修改上条记录的sex字段
db.insert({‘name’:’djstava’, ‘sex’:’female’})
# 查询操作
q = Query()
db.search(q.name == ‘xgx’😉
db.search(q.sex == ‘male’😉
# 查询条件支持&和|操作,组合查询
db.search((q.sex == ‘male’😉 & (q.name == ‘djstava’😉)
# 表, 如果不指定表名,默认是_default
table = db.table(‘far’😉
table.insert({‘score’: 100})

最后生成的test.json文件内容为
{“_default”: {“1”: {“name”: “xgx”, “sex”: “male”}, “2”: {“name”: “djstava”, “sex”: “male”}, “3”: {“name”: “djstava”, “sex”: “female”}}, “far”: {“1”: {“score”: 100}}}

原创文章,作者:霜天,如若转载,请注明出处:https://www.i5seo.com/python-shi-yong-mo-kuai-tui-jian-pyyaml-qrcodetinydb.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

手贱删了一些内容,暂时先这样,白天上班忙,晚上才有空弄一弄。哪里有bug发邮件([email protected])怼,一不小心就更新了。