# Copyright 2015 The Chromium Authors. All rights reserved. # Use of this source code is governed by a BSD-style license that can be # found in the LICENSE file. import logging import os import zipfile def WriteToZipFile(zip_file, path, arc_path): """Recursively write |path| to |zip_file| as |arc_path|. zip_file: An open instance of zipfile.ZipFile. path: An absolute path to the file or directory to be zipped. arc_path: A relative path within the zip file to which the file or directory located at |path| should be written. """ if os.path.isdir(path): for dir_path, _, file_names in os.walk(path): dir_arc_path = os.path.join(arc_path, os.path.relpath(dir_path, path)) logging.debug('dir: %s -> %s', dir_path, dir_arc_path) zip_file.write(dir_path, dir_arc_path, zipfile.ZIP_STORED) for f in file_names: file_path = os.path.join(dir_path, f) file_arc_path = os.path.join(dir_arc_path, f) logging.debug('file: %s -> %s', file_path, file_arc_path) zip_file.write(file_path, file_arc_path, zipfile.ZIP_DEFLATED) else: logging.debug('file: %s -> %s', path, arc_path) zip_file.write(path, arc_path, zipfile.ZIP_DEFLATED)