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

在哪里可以存储Python包中提取的程序文件?,python,temporary-files,tarfile,Python,Temporary Files,Tarfile,我已经编写了一个Python包,它附带了model.tar文件。无论是文件本身还是内容都不应该打扰用户——他们可以查看一下,这不是秘密——但他们不需要它 我需要处理档案中的文件。为此,我提取内容并使用它们: import tarfile tar = tarfile.open('model.tar in python package') tar.extractall() tar.close() [... work with those files ...] 这很有效。然而,我发现这种方法存在两个

我已经编写了一个Python包,它附带了model.tar文件。无论是文件本身还是内容都不应该打扰用户——他们可以查看一下,这不是秘密——但他们不需要它

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

import tarfile
tar = tarfile.open('model.tar in python package')
tar.extractall()
tar.close()
[... work with those files ...]
这很有效。然而,我发现这种方法存在两个问题:

每次都会提取model.tar。 包含的文件被放置在当前工作目录中,这可能不是用户所期望的。 要解决问题2,在我看来,在中创建临时文件夹将是最干净的解决方案。然而,我不确定是否应该在那里这样做


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

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

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

在安装时将其解压缩到源目录中

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


如果您能承受每次运行一次解包,请使用tempfile.gettempdir。

请使用with语句打开文件。tempfile.gettempdir对我来说似乎很好,但为什么您不能在tarfile所在的位置提取tarfile?model.tar内容确实是临时的?据我所知,您将经常访问此类内容。我说得对吗?@Veedrac:我不知道Python包放在哪里,也不知道程序是否有权在那里编写。如果是这样,那么这就是我问题的答案。@Menegazzo:是的,你是对的。model.tar不会改变。每次程序执行时,我可能会访问内容数百或数千次,但至少一次。但是,我只在内容大小约为~10MB时读取内容。>如果文件大小只有~10MB,只需将其读入RAM即可。您以后的数千次访问将感谢您。这就是我所做的。>在安装时将其解包到源目录中是否保证该目录是可写的?@moose这不允许您在运行时更改目录,但您可以在安装时写入该目录,因为根据定义,您已经可以访问该目录。安装时执行的代码应该放在哪里时间?@moose,