Вместо использования extractall
используйте namelist
, чтобы получить имена всех членов, затем выполните итерации по ним и используйте extract(member, path)
, чтобы извлечь их по любому пути.
В вашем примере: (где папки буквально A1
, B1
, C1
)
import os.path
with zipfile.ZipFile('C:/Feeds.zip', "r") as z:
for member in z.namelist():
dirname = os.path.basename(member) + "1"
z.extract(member, dirname)
Если файлы имеют расширения и вы не хотите, чтобы они появлялись в именах папок, используйте dirname = os.path.basename(member).split('.')[0] + "1"
.
Конечно, вы можете заменить dirname на любую другую папку / путь, который вы хотите для каждого файла.Например, если у вас уже есть массив путей, по которым вы хотите сохранить файлы, вы можете сделать
for member,path in zip(z.namelist(), paths):
z.extract(member, path)