Tre*_*ers 3 python compression tar tarfile
我正在尝试设置一个代码来将几个大文件(从数十到数百 GB)打包到一个存档中。tarfile 模块支持的压缩方法对于这么大的数据量来说有点慢,所以我想使用一些像 lz4 这样的外部压缩模块来实现更好的压缩速度。不幸的是,我找不到如何创建 tar 文件并使用 lz4 动态压缩它以避免创建临时 tar 文件的方法。tarfile 模块的文档说有一种方法可以使用“w|”打开未压缩的流进行写入 模式。这是将tar文件直接流式传输到lz4模块的方法吗?如果是这样,使用它的正确方法是什么?非常感谢。
根据我们上面的对话。
import tarfile
import subprocess
p = subprocess.Popen(['lz4', '-'], stdin=subprocess.PIPE)
tar = tarfile.open(fileobj=p.stdin, mode="w|")
Run Code Online (Sandbox Code Playgroud)
从那里你可以做通常的tar.addfile。仅供参考:正如我在谈话中所说的。GNU tar 可以自动检测 gz 和 bz2 但不能自动检测 lz4。只是一个注释。所以你必须做lz4 -c -d stdin.lz4 | tar xf -提取文件。如果你只是这样做,tar xf它就会失败。