Eliminando la ruta de un archivo zip usando python

Tengo un archivo zip que tiene una ruta. Cuando descomprimo el archivo usando python y lo coloco en mi carpeta de destino, crea todos los archivos en la ruta dentro de mi carpeta de destino.

Destino: d: \ unzip_files el archivo zip tiene una ruta y un nombre de archivo de: \ NIS \ TEST \ Files \ tnt.png

Qué sucede: d: \ unzip_files \ NIS \ TEST \ Files \ tnt.png

¿Hay alguna forma de hacerlo simplemente descomprimir el archivo tnt.png en d: \ unzip_files? ¿O tendré que leer la lista, mover el archivo y luego eliminar todas las carpetas vacías?

import os, sys, zipfile zippath = r"D:\zip_files\test.zip" zipdir = r"D:\unzip_files" zfile = zipfile.ZipFile(zippath, "r") for name in zfile.namelist(): zfile.extract(name, zipdir) zfile.close() 

Entonces, esto es lo que funcionó ..

 import os, sys, zipfile zippath = r"D:\zip_files\test.zip" zipdir = r"D:\unzip_files" zfile = zipfile.ZipFile(zippath, "r") for name in zfile.namelist(): fname = os.path.join(zipdir, os.path.basename(name)) fout = open(fname, "wb") fout.write(zfile.read(name)) fout.close() 

Gracias por la ayuda.

¿Qué hay de leer el archivo como binario y volcarlo? Necesidad de tratar casos donde exista un archivo preexistente.

 for name in zfile.namelist(): fname = os.path.join(zipdir, os.path.basename(name)) fout = open(fname, 'wb') fout.write(zfile.read(name))