引言
如何保存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 的内置类型,包括 list
、dict
和 Unicode 字符串。
使用指南
写入数据
write
函数用于将键值对存储到指定的 .yml
文件:
python
def write(key: str, value: any, *, file: str | None = None) -> bool:
...
参数说明:
key
:要存储的键,必须是有效的 YAML 键。value
:要存储的值,必须为 Python 基本类型(如int
、float
、str
、list
、dict
)。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。