1#!/usr/bin/env python3 2 3import tarfile 4import zipfile 5import sys 6import io 7from pathlib import Path 8 9def merge_zips_to_tgz(tgz_filename, zip_filenames): 10 with open(tgz_filename, 'wb') as outfile: 11 with tarfile.open(fileobj=outfile, mode='w:gz') as tgz: 12 for zip_filename in zip_filenames: 13 with zipfile.ZipFile(zip_filename, 'r') as zip_file: 14 for zip_info in zip_file.infolist(): 15 with zip_file.open(zip_info) as zip_member: 16 buffer = io.BytesIO(zip_member.read()) 17 tar_info = tarfile.TarInfo(name=zip_info.filename) 18 tar_info.size = len(buffer.getbuffer()) 19 tgz.addfile(tarinfo=tar_info, fileobj=buffer) 20 21 22if __name__ == "__main__": 23 if len(sys.argv) < 2: 24 print(f"Usage: {Path(__file__).name} output.tgz zip1.zip zip2.zip ...") 25 sys.exit(1) 26 27 tgz_filename = sys.argv[1] 28 zip_filenames = sys.argv[2:] 29 merge_zips_to_tgz(tgz_filename, zip_filenames) 30 31