将临时文件和 tarfile 与 python 结合起来?

use*_*978 5 python zip temporary-files tarfile

假设我们有一个临时文件,可以向其中写入一些输出。但出于某种奇怪的原因,我们希望通过一些归档技术(例如 tar)对其进行压缩,

我所说的 tempfile 是指没有由 tempfile.TemporaryFile() 创建的可见名称的文件。有任何想法吗?我的第一印象包括一些调整和类继承..有没有更简单的方法?

409*_*ict 4

fileobj的参数正是tarfile.open为了这个目的:您可以传递任何支持写入的类似文件的对象,并且tarfile会很乐意使用它,而不是尝试访问文件系统。请注意,此类文件应以二进制模式打开,而不是以文本模式打开(tempfile.TemporaryFile默认情况下)。

\n\n

同样,第一个参数zipfile.ZipFile可以是类似文件的对象。

\n\n

所以你可以这样做:

\n\n
with tempfile.TemporaryFile(suffix=\'.tar.gz\') as f:\n    with tarfile.open(fileobj=f, mode=\'w:gz\') as tar:\n        tar.add(\xe2\x80\xa6)\n\n    f.flush()\n    f.seek(0)\n    print(f.read())\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者

\n\n
with tempfile.NamedTemporaryFile(\'wb\', suffix=\'.tar.gz\', delete=False) as f:\n    with tarfile.open(fileobj=f, mode=\'w:gz\') as tar:\n        tar.add(\xe2\x80\xa6)\n
Run Code Online (Sandbox Code Playgroud)\n\n

保留f.name在您的文件系统上并稍后探索其内容。

\n