使用缓存的Python包

2024-05-19 10:08:17 发布

您现在位置:Python中文网/ 问答频道 /正文

可以使用内置的pkgutil包来使用它的pkgutil.get_data来获取与包一起打包的数据

我的情况有点不同

我想允许一种独立于平台的方式,允许存储由我的包完成的数据,但不允许在安装时实际分发任何内容

当数据早于,比方说,1天,当一个新的转换正在进行时,它应该刷新这个缓存

代码可能有帮助:

import json
from datetime import datetime
from dateutil.relativedelta import relativedelta

cache_path = "XXX/here"
with open(cache_path) as f:
    cached_data = json.load(f)

def convert(value, from_type, to_type):
    pair = from_type + "-" to_type

    now = datetime.now()
    too_old = (now + relativedelta(days=1)).isoformat()
    if pair not in cached_data or too_old < cached_data[pair]['last_updated']:
        cached_data[pair] = get_new_value(pair)
        with open(cache_path, "w") as f:
            json.dump(cached_data, f)

    return value * float(cached_data[pair]['value'])

那么如何选择cache_path


Tags: 数据pathfromimportjsoncachedatadatetime
1条回答
网友
1楼 · 发布于 2024-05-19 10:08:17

内置的tempfile模块将在这里帮助您

import tempfile
with tempfile.NamedTemporaryFile(delete=False) as cache_path_fh:
    <do stuff>

删除/清理必须使用delete=False手动完成,因为您希望文件保持在文件句柄的范围之外

默认情况下,文件位于/tmp或系统的临时目录下,可以进行调整。见docs

相关问题 更多 >

    热门问题