2015-12-13 4 views
0

Мне нужно разархивировать многочисленные файлы zipx в каталог, проверяя при запуске, если распакованные файлы соответствуют условию. Условие: «если файл с тем же именем будет поверх него, то только если распакованный файл больше».unzipping zipx путем управления winzip с помощью python

Я хотел управлять winzip с помощью win32com, но я не смог найти Object.Name со COM-браузером (win32com \ client \ combrowse.py). Также было бы неплохо найти методы, которые я мог бы использовать с этим объектом winzip.

Может ли кто-нибудь помочь с тем, как я выбираю или совет, более простой вариант для решения описанной проблемы. Thansk.

+0

Возможно использование сжатия файлов/декомпрессии LIB вместо этого? –

+0

который будет бесплатным и работать с zipx? – user1995926

ответ

1

Забудьте win32com. Вместо

  1. создать папку назначения
  2. цикл по zipx архивов; для каждого из них:
    1. создать временную папку с помощью модуля
    2. TempFile Питона использовать модуль подпроцесса для запуска архиватора, утилиты (которая обрабатывает zipx формат) на zipx архива с параметром командной строки для извлечения в папку темпа созданный
    3. используйте модуль shutil для копирования каждого разархивированного файла в эту папку в общую папку назначения, созданную на первом этапе, , если файл соответствует этому условию. Для размера файла используйте Path.stat(). St_size или os.path.get_size().
    4. Стирание температура папки

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

  1. создать папку
  2. создать папку извлечения темпа архива с помощью модуля TempFile Питона
  3. перебирает zipx архивов; для каждого из них:
    1. использовать модуль подпроцесс запустить архиватор, утилита (которая обрабатывает zipx формат) на zipx архив с параметром командной строки для извлечения в папку темп созданной
    2. использовать модуль shutil копировать каждый распакуйте файл в этой папке в общую папку назначения, созданную на первом этапе, , если файл соответствует этому условию. Для размера файла используйте Path.stat(). St_size или os.path.get_size().
    3. стирают содержимое папок Temp
  4. Стирание температура папки
+0

Основная проблема с zipx. Для этого нет бесплатной утилиты для распаковки. Вот почему я пытаюсь запустить специально winzip с win32com – user1995926

+0

Решение, которое я описываю, позволяет вам это сделать. Я редактировал, может быть, теперь яснее. – Schollii