mirror of https://github.com/python/cpython
31 lines
779 B
Python
31 lines
779 B
Python
|
"""
|
||
|
Generate zip test data files.
|
||
|
"""
|
||
|
|
||
|
import contextlib
|
||
|
import os
|
||
|
import pathlib
|
||
|
import zipfile
|
||
|
|
||
|
|
||
|
def make_zip_file(src, dst):
|
||
|
"""
|
||
|
Zip the files in src into a new zipfile at dst.
|
||
|
"""
|
||
|
with zipfile.ZipFile(dst, 'w') as zf:
|
||
|
for src_path, rel in walk(src):
|
||
|
dst_name = src.name / pathlib.PurePosixPath(rel.as_posix())
|
||
|
zf.write(src_path, dst_name)
|
||
|
zipfile._path.CompleteDirs.inject(zf)
|
||
|
return dst
|
||
|
|
||
|
|
||
|
def walk(datapath):
|
||
|
for dirpath, dirnames, filenames in os.walk(datapath):
|
||
|
with contextlib.suppress(ValueError):
|
||
|
dirnames.remove('__pycache__')
|
||
|
for filename in filenames:
|
||
|
res = pathlib.Path(dirpath) / filename
|
||
|
rel = res.relative_to(datapath)
|
||
|
yield res, rel
|