def mk_zip_version(fileList, new_version_zip):
if os.path.exists(new_version_zip):
shutil.rmtree(new_version_zip)
file = zipfile.ZipFile(new_version_zip, 'w', zipfile.ZIP_DEFLATED)
for ind in fileList:
print "archiving file %s" % (ind)
file.write(ind)
file.close()
return True
def dirEntries(new_version, subdir, *args):
fileList = []
for file in os.listdir(new_version):
dirfile = os.path.join(new_version, file)
if os.path.isfile(dirfile):
if not args:
fileList.append(dirfile)
else:
if os.path.splitext(dirfile)[1][1:] in args:
fileList.append(dirfile)
elif os.path.isdir(dirfile) and subdir:
print "Accessing directory:", dirfile
fileList.extend(dirEntries(dirfile, subdir, *args))
return fileList
mk_zip_version(dirEntries('Directory', True), 'Archiv.zip')
Проблема в том что если в директориия есть пустой каталог он не записывается в архив, а надо.
Что не так?
А что вас удивляет? Функцию dirEntries вы сами писали или взяли откуда-то?(чем то она мне copytree из shutil напоминает) Никаких пустых каталогов и не будет - только файлы. Ведь вы в fileList что добавляете ( fileList.append(dirfile) ) - только файлы. Если же попадается каталог, то вызывается эта же функция и по прежнему добавляются только файлы. Непустые каталоги в архиве создаются только потому что они есть в путях файлов.
А что вас удивляет? Функцию dirEntries вы сами писали или взяли откуда-то?(чем то она мне copytree из shutil напоминает) Никаких пустых каталогов и не будет - только файлы. Ведь вы в fileList что добавляете ( fileList.append(dirfile) ) - только файлы. Если же попадается каталог, то вызывается эта же функция и по прежнему добавляются только файлы. Непустые каталоги в архиве создаются только потому что они есть в путях файлов.
Ясно, dirEntries нашел на просторах интернета. Видимо буду делать сначало tar потом zip, и кашернее и удобнее.