4

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

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

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

我正在考虑类似 scipy.weave 的编译缓存之类的东西 - 但想知道是否有更现代的支持方式来做这件事。在 *nix 平台上,我希望它可以进入,~/.something但我不确定 Windows 等价物是什么。此外,这应该是可配置的,以便用户可以在更方便的情况下将其指向其他地方,或者在用户之间共享缓存目录。这样的配置文件应该如何工作?它应该去哪里?

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

任何指针都非常受欢迎......

4

2 回答 2

3

您可以使用标准库模块ConfigParser来解析 ini 文件(或 .rc 文件,具体取决于您的文化)。要查找文件,os.path.expanduser是一个有用的函数,它可以在所有平台上为“~/.mytoolrc”之类的路径执行正确的操作。要让用户覆盖事物的位置,您可以通过os.environ使用环境变量。

于 2009-12-09T15:54:17.537 回答
2

免费操作系统世界中有一个新兴标准:http: //standards.freedesktop.org/basedir-spec/basedir-spec-latest.html

这个模块可以帮助你的 Windows 和 Max OS X,但它似乎在 XDG 基础目录规范方面被打破了:http: //pypi.python.org/pypi/appdirs

于 2011-12-21T16:28:15.553 回答