如何以编程方式访问存储为静态文件的数据显示(加载一个pickle文件)?
我现在使用的这个解决方案是这样的:
我有一个1MB的 .dbf 文件,和我所有的 .py 模块放在同一个文件夹里。在 main.py
文件里,我写了:
import tools
在 tool.py
文件里的代码是:
the_list_that_never_changes = loadDbf(file).variables['CNTYIDFP'].
所以 the_list_that_never_changes
这个列表只会加载一次,并且一直保存在内存中,随时可以使用...对吗?
2 个回答
0
把 data.pkl
文件放在和 main.py
文件同一个文件夹里,然后可以用类似下面的代码:
pickle_path = os.path.join(os.path.dirname(__file__), 'data.pkl')
f = open(pickle_path)
data = pickle.load(f)
不要把 data.pkl
加到 app.yaml
文件里。
如果你经常需要读取这个数据,解压后可以考虑把它放到内存缓存中。这样的话,下次读取的时候就可以直接从内存中拿,通常比从硬盘读取要快。
2
静态文件和应用程序文件是分开存放的。如果你想从 main.py
中加载 data.pkl
文件,那就不要把它标记为静态文件,这样 main.py
就可以像访问其他应用程序文件一样访问它。
参考资料:应用程序配置的 静态文件处理器。
另外一个方法:为什么不把 data.pkl
中的信息定义为 Python 源代码中的全局变量呢?这样你就不用费劲去读取文件和反序列化它的内容,而且速度也会快一些。这还可以方便地利用应用程序缓存——你的数据只会加载一次,然后可以被后续的请求使用。