Cómo comprimir con 7zip en lugar de zip, cambio de código

Tengo un código que comprime cada archivo en una carpeta específica con zip, pero quiero comprimirlo con 7zip, ¿cómo hacerlo?

Esto es lo que tengo hasta ahora:

for date in dict_date:#zipping folders and get same name like the folder with ZipFile(os.path.join(src, '{0}.7z'.format(date)), 'w') as myzip: for subFolder in dict_date[date]: for fil in os.listdir(os.path.join(src, date, subFolder)): if not fil.endswith('.7z'): myzip.write(os.path.join(src, date, subFolder, fil)) 

Puedes probar el método de línea de comandos

 import subprocess subprocess.call(['7z', 'a', filename+'.7z', filename]) 

o para todos los archivos en la carpeta

 subprocess.call(['7z', 'a', filename+'.7z', "*.*"]) 

No parece haber un buen módulo de Python para crear un archivo 7z (a pesar de lo que dice la documentación, py7zlib solo puede leerlos ).

Una solución alternativa es descargar el SDK de 7z ( http://www.7-zip.org/sdk.html ) y usar los ejecutables de 7zr que vienen con él a través del módulo de subproceso. 7z está en el dominio público, por lo que puede llevar este progtwig independiente sin restricciones.