【发布时间】:2014-12-05 13:11:18
【问题描述】:
我编写了一个 Python 包 hwrt,它带有一个 model.tar 文件。文件本身和内容都不应打扰用户(他们可以查看它,这不是秘密 - 但他们不需要它)。
我需要处理该存档中的文件。为此,我提取内容并使用它们:
import tarfile
tar = tarfile.open('model.tar in python package')
tar.extractall()
tar.close()
[... work with those files ...]
这行得通。但是,我发现这种方法存在两个问题:
-
model.tar每次都会被提取。 - 包含的文件被放置在用户可能不期望的当前工作目录中。
为了解决问题 (2),在我看来,在 tempfile.gettempdir() 中创建一个临时文件夹将是最干净的解决方案。但是,我不确定这是否是应该这样做的地方。
是否有其他存档格式可以让我直接访问存档的内容?是否有一个目录可以在我的 Python 包安装后(适用于所有用户)放置文件?
【问题讨论】:
-
请使用
with语句打开文件。 -
tempfile.gettempdir对我来说似乎很好,但为什么不能在 tarfile 所在的地方提取 tarfile ? -
model.tar内容真的是临时的吗?据我了解,您会经常访问此类内容。我说的对吗? -
@Veedrac:我不确定 Python 包的放置位置以及程序是否有权在此处写入。如果是这样,那么这就是我的问题的答案。
-
@Menegazzo:是的,你是对的。
model.tar不会改变。每次程序执行我可能会访问内容数百(或数千)次,但至少访问一次。但是,我只阅读了一次内容(它们的大小约为 10MB)。
标签: python temporary-files tarfile