Скажем, вы хотите сжать все папки (подкаталоги) в текущем каталоге.
for root, dirs, files in os.walk("."):
for sub_dir in dirs:
zip_you_want = sub_dir+".zip"
zip_process = zipfile.ZipFile(zip_you_want, "w", zipfile.ZIP_DEFLATED)
zip_process.write(file_you_want_to_include)
zip_process.close()
print("Successfully zipped directory: {sub_dir}".format(sub_dir=sub_dir))
Да, VariantDir сбивает с толку в scons. Хотя это плохо рекламируется, вы можете поместить как SConstruct, так и SConscript в один и тот же каталог, используя текущий каталог в качестве исходного каталога
# SConstruct
SConscript('SConscript', build_dir='build', src='.')
и
# SConscript
Program('main.c')
. Я никогда не находил способа избежать использования двух файлов, сохраняя при этом рассудок, пытаясь понять вариант dir:)
Я смог разделить двоичные файлы в каталоге сборки с помощью этого вызова:
# SConstruct
SConscript('SConscript', variant_dir='build', src_dir='..', duplicate=0)
Если вы хотите поместить двоичные файлы в каталог двумя уровнями ниже, сделайте следующее:
# SConstruct
SConscript('SConscript', variant_dir='build/release', src_dir='../..', duplicate=0)
В основном, предоставьте параметр src_dir
в качестве пути из каталога сборки обратно в исходный каталог.