2009-12-09 155 views
3

我有一个python模块,它可以生成大量的数据文件,我想要在磁盘上缓存以备将来使用。对于普通用户来说,缓存可能会达到几百MB,但可以节省大量计算时间。python包的数据缓存

文件不与模块一起分发,而是在第一次使用给定的一组参数运行代码时生成的。

到目前为止,我刚刚使用了一个单独的文件模块,并将它们放在相对于模块(data /)的硬编码路径中。但是我现在需要将这个模块分发到distutils的Python包中,我想知道是否有一个标准的方法来做到这一点。

我在想像scipy.weave的编译缓存 - 但想知道是否有一个更现代的支持方式。在* nix平台上,我希望它会在~/.something中,但我不确定相应的窗口是什么。此外,这应该是可配置的,以便用户可以将它指向其他地方,如果它更方便,或共享用户之间的缓存目录。这样的配置文件应该如何工作?它应该去哪里?

或者我应该只是将它作为安装选项,通过setup.py旁边的配置文件或手动编辑setup.py来设置,然后在安装之前在模块中硬编码目录?

greatfully收到任何指针...

回答

3

您可以使用标准库模块ConfigParser来解析ini文件(或者根据你的文化rc文件)。要找到该文件,os.path.expanduser是一个有用的功能,可以在所有平台上为“〜/ .mytoolrc”等路径执行正确的操作。要让用户覆盖事物的位置,您可以通过os.environ使用环境变量。

+0

谢谢 - 所以我想默认是〜/ .mycache或〜/ _mycache目录。查找〜/ .my_module或〜/ _my_module配置文件,如果存在,则从该文件中获取目录。然后,默认应该适用于大多数人,但它很容易配置。我宁愿避免环境变量,因为我不认为Windows人通常喜欢设置这样的东西。 – robince 2009-12-09 16:00:55