首页 > 技术文章 > 将python 中的变量保存到本地,以及删除本地变量。

gznb 2020-03-20 20:25 原文

如何将python中的变量保存在本地?

将python 的一些代码保存在本地, 特别是一些需要大量运算的结果,例如 机器学习里面的模型,,放在本地,还是比较好用的。下次就可以直接拿出来使用就好。
然后现在添加了一个删除变量的小功能。

其实可以 我觉得可以把 python 中的变量 保存在 redis 中,好像很骚气的样子。现在的代码是放在本地文件中。
参考博客:
https://blog.csdn.net/qq_27061325/article/details/82113883
参考链接:
https://www.thoughtco.com/using-shelve-to-save-objects-2813668

见代码:

import shelve
from contextlib import closing

class local_cache:
    def __init__(self, cache='var.pkl'):
        self.cache = cache
    
    def __setitem__(self, key, value):
        """
        key: 变量名
        value: 变量值
        cache: 缓存名
        """
        with closing(shelve.open(self.cache, 'c')) as shelf:
            shelf[key] = value 
    
    def __getitem__(self, key):
        """
        key : 变量名
        return:变量值
        """
        with closing(shelve.open(self.cache, 'r')) as shelf:
            return shelf.get(key)

    def remove(self, key):
    	"""
    	key: 变量名

    	如果 变量存在则删除, 如果不存在,会抛出一个异常,由调用方去处理
    	"""
    	with closing(shelve.open(self.cache, 'r')) as shelf:
    		del shelf[key]
    		return True


if __name__ == '__main__':
	# 保存变量和提取变量
	# cache = local_cache('var.pkl')
	# cache['ok'] = 'okk'
	# ok = cache['ok']
	# print(ok)
	
	# 删除变量
	cache = local_cache('var.pkl')
	cache.remove('ok')
	ok = cache['ok']
	print(ok)

本地保存文件:

在redis中保存python对象: xxxxxx

推荐阅读