Найти имя файла с zip в следующей папке / каталоге и извлечь его в новую папку в том же каталоге? - PullRequest
0 голосов
/ 08 ноября 2019

Я использовал os.walk(), чтобы получить список файлов в DataFrame. Теперь я хочу извлечь zip-папки из списка файлов в DataFrame.

DataFrame

file_name   base_name extension    absolute_path                  rel_path
file_1.pdf  file_1     pdf      C:\\temp\documents\file_1.pdf   \file_1.pdf
file_2.zip  file_2     zip      C:\\temp\documents\file_2.zip   \file_2.zip
file_3.7z   file_3     7z       C:\\temp\documents\file_3.7z    \file_3.7z
file_4.tar  file_4     tar      C:\\temp\documents\file_4.tar   \file_4.tar


  1. Я использую пакет python shutil для извлечения / разархивирования содержимого. Как я могу это сделать?
  2. Я также ищу другие форматы файлов (.7z, .tar), а также в том же каталоге, если они доступны.
  3. Извлеченные папки также должны находиться в одном каталоге с тем же именем.

Примечание: не могу изменить пакет, используемый для извлечения. только шутил пакет.

1 Ответ

0 голосов
/ 08 ноября 2019

Альтернативой открытию сжатых папок является ZiFile. Вы должны установить библиотеку с помощью pip install или любого другого установщика (например, conda).

Список импорта для кода:

import os
import fnmatch  
from zipfile import ZipFile

Новый код:

dirPath = 'C:\\temp' #Windows format
formats = ['*.zip','*.tar','*.7z']

for f in formats:
    for file in os.listdir(dirPath):
        if fnmatch.fnmatch(file,f):
            os.chdir(dirPath) #change where to open zipFile
            with ZipFile(file,'r') as zfiles:
                flist = zfiles.namelist()
                for zipped in flist:
                    zfiles.extract(zipped,dirPath) 

Если вы хотите извлечь другой каталог, измените переменную dirPath в строке:

zfiles.extract(zipped,dirPath)
...