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:
parent
b65c07082b
commit
19d50ee2c2
1 changed files with 2 additions and 6 deletions
|
@ -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():
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue