Python-高效地连接压缩文件

Python-高效地连接压缩文件,python,file,gzip,cat,Python,File,Gzip,Cat,我有一堆压缩文件(.gz),我想把它们合并成一个文件 我知道CL工具: cat file1.gz file2.gz > file.gz 我还从以下方面找到了这个解决方案: 但是,是否有任何其他方法可以通过Python像cat一样高效地完成此任务?Um,您的zcat命令将创建一个单独的解压缩文件作为输出。该链接问题中的其他三个答案中是否有一个不足够?如果您想要一个单独的压缩文件作为输出,只需cat就可以了,根本没有解压或再压缩发生;兼容的gzip解码器将多个串联的压缩流视为一个流(这就是“

我有一堆压缩文件(.gz),我想把它们合并成一个文件

我知道CL工具:

cat file1.gz file2.gz > file.gz
我还从以下方面找到了这个解决方案:


但是,是否有任何其他方法可以通过Python像cat一样高效地完成此任务?

Um,您的
zcat
命令将创建一个单独的解压缩文件作为输出。该链接问题中的其他三个答案中是否有一个不足够?如果您想要一个单独的压缩文件作为输出,只需
cat
就可以了,根本没有解压或再压缩发生;兼容的gzip解码器将多个串联的压缩流视为一个流(这就是“rsyncable”gzip的工作方式,重置压缩表,使块不依赖于之前块的内容)。(问题中给出的本机Python解决方案已经做到了这一点,将三个压缩流连接成一个压缩流,而不在任何地方进行解压缩或重新压缩,这与上面建议的
zcat
非常不同)…现代Linux内核有一些有趣的技巧,告诉内核在文件描述符之间进行复制,而不涉及用户。不能说GNU
cat
是否不看就使用它们,但这是可信的。如果是这样,那么你可以从查看是否有人的wr开始用于访问这些相同功能的itten Python代码。
with open(..., 'wb') as wfp:
  for fn in filenames:
    with open(fn, 'rb') as rfp:
      shutil.copyfileobj(rfp, wfp)