использование python для распаковки выбранных файлов из архивов 7zip с использованием подпроцесса - PullRequest
1 голос
/ 03 февраля 2012

В настоящее время я использую подпроцесс для распаковки выделенных или zip-файлов, используя 7zip.Я должен использовать этот метод распаковки вместо модуля zipfile, потому что иногда zipfile портит шейп-файлы.Мой текущий метод:

try:

    for file in os.listdir(downloads):
        print file
        expression2 = sevenzip + " e " +downloads + '\\' + file + " -oC:\Users\Oulton"
        print expression2

    #os.system(r"C:\Users\Oulton\7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton")
        subprocess.call(expression2)



except:
        time.sleep(3)
        traceback.print_exc()

Но это не удобно, потому что:

  1. Я хочу распаковать только некоторые файлы .shp, а не все другие ненужные файлы в каждом zip
  2. Оболочка открывается и закрывается для каждой итерации, я бы предпочел, чтобы оболочка оставалась открытой в течение всего времени
  3. Я должен использовать ручной ввод для перезаписи файлов с двойным именем, используя этот метод

1 Ответ

1 голос
/ 03 февраля 2012
  1. 7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton" *.shp -r
  2. Используйте циклы Windows для повторного использования одной и той же оболочки: http://www.robvanderwoude.com/for.php

3.

-ao (Overwrite mode) switch
Specifies the overwrite mode during extraction, to overwrite files already present on disk.

-i и -x могут использоваться для включения или исключения определенных файлов для извлечения.

7z e C:\Users\Oulton\install.zip -oC:\Users\Oulton -ir!*.shp -ir!*.mxd -ir!*.shx -ir!*.sbn -ir!*.dbf -ir!*.xml
...