Как распаковать zip-файл и скопировать файлы в разные папки? - PullRequest
0 голосов
/ 26 сентября 2019

Я хочу разархивировать zip-файл и скопировать отдельные файлы в разные папки.

Например, у меня есть zip-файл с именем "Feeds.zip".В этом у меня есть 3 файла с именами A, B, C.Я хочу скопировать эти 3 файла в разные папки A1, B1, C1 соответственно.

Я написал приведенный ниже код, чтобы разархивировать файл и узнать, как извлечь все файлы.Но, как уже упоминалось, мое требование немного отличается.

with zipfile.ZipFile('C:/Feeds.zip', "r") as z:
    z.extractall("C:/Desktop/")

Пожалуйста, помогите.

1 Ответ

1 голос
/ 26 сентября 2019

Вместо использования 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)
...