Как прочитать файл из ZIP архива не распаковывая этот архив?
Недавно была задача достать данные из JSON файла который лежит в ZIP архиве.
Первое, что приходит в голову – распечатать архив в TEMP и найти нужный файл. Но с Python можно сделать проще: прочитать нужный файл в архиве не извлекая всё содержимое.
Например, есть некий архив archive.zip. Где-то внутри есть файл config.json который нам надо прочитать.
Вот код который это сделает:
from zipfile import ZipFile
from pathlib import Path
import json
def get_json_from_zip(archive, file_name):
zip = ZipFile(archive)
for zipname in zip.namelist():
if Path(zipname).name == file_name:
with zip.open(zipname) as f:
return json.load(f)
config_name = 'config.json'
archive_path = 'archive.zip'
conf = get_json_from_zip(archive_path, config_name)
#tricks#libs