1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:18:12 +00:00

Meta: Extract .zip file directories in an encoding-agnostic manner

The current implementation fails if a file in the archive is not valid
UTF-8. The CLDR 44.0.1 package unfortunately contains such files (it
errantly has .DS_Store files).
This commit is contained in:
Timothy Flynn 2023-11-16 12:45:48 -05:00 committed by Andrew Kaster
parent b65c07082b
commit 19d50ee2c2

View file

@ -47,15 +47,11 @@ def extract_directory(file, destination, path):
destination_path.mkdir(parents=True, exist_ok=True)
if not isinstance(file, zipfile.ZipFile):
raise NotImplementedError
# FIXME: This loops over the entire archive len(args.paths) times. Decrease complexity
for entry in file.namelist():
if entry.startswith(path):
entry_destination = destination / entry
if entry.endswith('/'):
entry_destination.mkdir(exist_ok=True)
continue
with file.open(entry) as member:
entry_destination.write_text(member.read().decode('utf-8'))
file.extract(entry, destination)
def main():