我在哪里可以存储Python包中提取的程序文件?

时间:2014-12-05 13:11:19

标签: python temporary-files tarfile

我编写了一个包含model.tar文件的Python包hwrt。文件本身和内容都不应该打扰用户(他们可以看一下,这不是秘密 - 但他们不需要它。)

我需要处理该档案中的文件。为此,我提取内容并使用它们:

import tarfile
tar = tarfile.open('model.tar in python package')
tar.extractall()
tar.close()
[... work with those files ...]

这很有效。但是,我发现这种方法存在两个问题:

  1. 每次都会提取model.tar
  2. 包含的文件放在当前工作目录中,这可能是用户不期望的。
  3. 为了解决问题(2),在我看来,在tempfile.gettempdir()中创建一个临时文件夹将是最干净的解决方案。但是,我不确定这是不是应该这样做的地方。

    是否有其他存档格式可以直接访问存档的内容?是否有一个目录,我可以在安装后为我的Python包(适用于所有用户)放置文件?

1 个答案:

答案 0 :(得分:0)

如果文件只有~10MB,只需将其读入RAM即可。您以后的数千次访问将会感谢您。

如果您只想在第一次解包,您有几个选择:

  • 在安装时解压缩到源目录

  • 解压缩一次到本地.cache目录

如果您可以在每次运行后进行拆包,请使用tempfile.gettempdir