【发布时间】:2021-09-03 07:58:35
【问题描述】:
我希望在 Python 3.8 中执行以下操作:
xz --decompress --stdout < hugefile.xz > hugefile.out
在哪里都不输入和输出都不能很好地适应内存。
当我阅读https://docs.python.org/3/library/lzma.html#lzma.LZMADecompressor 的文档时 我可以使用 LZMADecompressor 来处理增量可用的输入,我可以使用它的 decompress() 函数来增量地产生输出。
然而,LZMADecompressor 似乎将其整个解压缩输出放入单个内存缓冲区,而 decompress() 从单个输入内存缓冲区读取其整个压缩输入。
当然,文档让我对输入和/或输出何时可以增量感到困惑。
所以我想我必须生成一个单独的子进程来执行“xz”二进制文件。
有没有使用 lzma Python 模块来完成这项任务?
【问题讨论】:
-
除了潜在的可移植性问题(即,xz 可能未安装),我倾向于执行子进程。如果 lzma 模块有一个明确定义的流式传输机制,那很好,但情况似乎并非如此
-
是的,我怀疑你是对的。说得好。