Как я могу извлечь несколько файлов .zip? - PullRequest
1 голос
/ 18 мая 2019

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

import os
import zipfile

os.chdir('/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos')

for f in os.listdir("/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos"):
    if f.endswith(".zip"):
        z = zipfile.ZipFile(f, 'r')
        z.extractall(path = '/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos/dados')
        z.close()

Однако он извлекает только файлы из первого архива.Я использую Python 3.6.Что не так?

1 Ответ

1 голос
/ 21 мая 2019

Я думал, что этот сценарий может быть серьезным кандидатом ...

В результате получается, что для каждого файла .zip все его элементы извлекаются, но они перезаписывают элементы, извлеченные из предыдущего файла (ну, кроме 1 st ). Итак, в конце вы получите файлы из последнего архива, который был перечислен.
Чтобы обойти эту проблему, вы должны разархивировать каждый .zip членов файла в отдельный каталог (имя файла .zip ).

Ниже приведен пример (я также немного упростил / очистил ваш код).

code.py

#!/usr/bin/env python3

import os
import glob
import zipfile


dir_name_base = "/home/marlon/Shift One/Projeto Philips/Consolidação de Arquivos"

for arc_name in glob.iglob(os.path.join(dir_name_base, "*.zip")):
    arc_dir_name = os.path.splitext(os.path.basename(arc_name))[0]
    zf = zipfile.ZipFile(arc_name)
    zf.extractall(path=os.path.join(dir_name_base, "dados", arc_dir_name))
    z.close()
...