В настоящее время я использую подпроцесс для распаковки выделенных или 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()
Но это не удобно, потому что:
- Я хочу распаковать только некоторые файлы .shp, а не все другие ненужные файлы в каждом zip
- Оболочка открывается и закрывается для каждой итерации, я бы предпочел, чтобы оболочка оставалась открытой в течение всего времени
- Я должен использовать ручной ввод для перезаписи файлов с двойным именем, используя этот метод