MFZipFile
Python’s ZipFile
doesn’t preserve file permissions at extraction time. The MFZipFile
subclass:
modifies
ZipFile.extract()
to preserve permissions per the recommendation hereadds a static
ZipFile.compressall()
method to create a zip file from files and directoriesmaintains an otherwise identical API
compressall
The compressall
method is a static method that creates a zip file from lists of files and/or directories. It is a convenience method that wraps ZipFile.write()
, ZipFile.close()
, etc.
from zipfile import ZipFile
from modflow_devtools.zip import MFZipFile
def test_compressall(function_tmpdir):
zip_file = function_tmpdir / "output.zip"
input_dir = function_tmpdir / "input"
input_dir.mkdir()
with open(input_dir / "data.txt", "w") as f:
f.write("hello world")
MFZipFile.compressall(str(zip_file), dir_pths=str(input_dir))
assert zip_file.exists()
output_dir = function_tmpdir / "output"
output_dir.mkdir()
ZipFile(zip_file).extractall(path=str(output_dir))
assert (output_dir / "data.txt").is_file()