一个极简极易用, "即读即用"的Python存储库介绍: SimpSave

引言

如何保存Python程序的数据?

数据库毫无疑问是最标准的做法.然而,对于我们大部分的学生项目乃至简单脚本而言,数十上百乃至就几条的数据量远远谈不上"大数据",哪怕是轻如TinyDB也许都可谓不够"便携".

Python原生的数据结构就足够强大足以应付我们日常中很多的应用场景.如果有一个简单且极其易用(几乎不用学习就能上手)的kv数据库,同时封装一些常用功能(如键的正则匹配,在不同目录的.py之间轻易的访问同一个数据库等),存的数据类型和读出来的数据类型一致能够"即读即用",能将对数据库的操作和对读写的值的操作合二为一,何尝不是一件美事?

由以上理由,项目SimpSave应运而生.如果项目对你有帮助的话,还请点点Star以表支持了:)

(所谓"即读即用"示例)

文档

简介

SimpSave 4.0 是一个轻量级的 Python 数据持久化库,现已升级为使用 .yml 文件进行存储 。从 .ini 切换到 .yml 带来了对 Unicode 和复杂数据结构的增强支持,无需再进行 UTF-8 或转义转换。

特性

  • 极致简单:整个项目代码行数不超过 200 行。
  • 易于使用:极简配置和直观的 API,便于快速集成。
  • 灵活轻量 :支持所有 Python 基本类型,包括 Unicode,无需额外依赖(仅需 PyYAML)。
  • 原生 YAML:完全原生支持 Unicode 和结构体------不再需要转义或编码技巧。

兼容 SimpSave 4.0 版本。


安装

SimpSave 4.0 已发布至 PyPI,可通过以下命令安装:

复制代码
pip install simpsave

**注意:**SimpSave 4.0 依赖 PyYAML 库,pip 会自动安装所需依赖。

在项目中使用 SimpSave:

javascript 复制代码
import simpsave as ss  ## 通常简写为 'ss'

原理

SimpSave 4.0 使用 .yml 文件的键值对存储 Python 基本类型变量。默认情况下,数据保存在当前工作目录下名为 __ss__.yml 的文件中。你也可以自定义文件路径。

唯一路径模式

和之前一样,SimpSave 支持独有的 :ss: 路径模式。如果文件路径以 :ss: 开头(如 :ss:config.yml),文件将保存到 SimpSave 安装目录,确保不同环境下的兼容性。

注意::ss: 模式要求通过 pip 安装 SimpSave。

SimpSave .yml 文件示例

yaml 复制代码
key1:
  value: Hello 世界
  type: str
key2:
  value: 3.14
  type: float
key3:
  value: [1, 2, 3, "中文", {"a": 1}]
  type: list

读取数据时,SimpSave 会自动将其还原为原始类型。SimpSave 4.0 完全支持 Python 的内置类型,包括 listdict 和 Unicode 字符串。


使用指南

写入数据

write 函数用于将键值对存储到指定的 .yml 文件:

python 复制代码
def write(key: str, value: any, *, file: str | None = None) -> bool:
    ...
参数说明:
  • key:要存储的键,必须是有效的 YAML 键。
  • value:要存储的值,必须为 Python 基本类型(如 intfloatstrlistdict)。
  • file:要写入的 .yml 文件路径,默认为 __ss__.yml,也可使用 :ss: 模式。
返回值:
  • 操作成功返回 True,否则返回 False
示例:
python 复制代码
import simpsave as ss
ss.write('key1', 'Hello 世界')      ## 写入 Unicode 字符串
ss.write('key2', 3.14)             ## 写入浮点数
ss.write('key3', [1, 2, 3, '中文']) ## 写入包含中文的列表

如果文件不存在,SimpSave 会自动创建。


读取数据

read 函数用于从指定的 .yml 文件中读取值:

python 复制代码
def read(key: str, *, file: str | None = None) -> any:
    ...
参数说明:
  • key:要读取的键。
  • file:要读取的 .yml 文件路径,默认为 __ss__.yml
返回值:
  • 返回指定键下存储的值,自动转换为原始类型。
示例:
python 复制代码
import simpsave as ss
print(ss.read('key1'))  ## 输出: 'Hello 世界'
print(ss.read('key2'))  ## 输出: 3.14

其他功能

检查键是否存在

has 函数用于判断某个键是否存在于 .yml 文件中:

python 复制代码
def has(key: str, *, file: str | None = None) -> bool:
    ...
示例:
python 复制代码
import simpsave as ss
print(ss.has('key1'))          ## 输出: True
print(ss.has('nonexistent'))   ## 输出: False

移除键

remove 函数用于从 .yml 文件中删除指定的键及其值:

python 复制代码
def remove(key: str, *, file: str | None = None) -> bool:
    ...
示例:
csharp 复制代码
import simpsave as ss
ss.remove('key1')  ## 删除键 'key1'

正则匹配键

match 函数用于通过正则表达式获取所有匹配的键值对:

python 复制代码
def match(re: str = "", *, file: str | None = None) -> dict[str, any]:
    ...
示例:
python 复制代码
import simpsave as ss
result = ss.match(r'^key.*')  ## 匹配所有以 'key' 开头的键
print(result)  ## 输出: {'key2': 3.14, 'key3': [1, 2, 3, '中文']}

删除整个文件

delete 函数用于删除整个 .yml 文件:

python 复制代码
def delete(*, file: str | None = None) -> bool:
    ...
示例:
ini 复制代码
import simpsave as ss
ss.delete(file='__ss__.yml')  ## 删除默认文件

总结

SimpSave 4.0 是一个简单、灵活、轻量级的库,适用于用 .yml 文件持久化存储 Python 基本数据类型。其易用的 API、原生 Unicode 支持以及对常见数据类型的兼容性,使它非常适合小型、低复杂度项目的数据持久化需求。

了解更多请访问 GitHub

相关推荐
databook10 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar11 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805111 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_11 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机18 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机19 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机19 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机19 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i19 小时前
drf初步梳理
python·django
每日AI新事件19 小时前
python的异步函数
python