import zipfile

# To get a list of files in the archive
with zipfile.ZipFile("data.zip", "r") as zipobj:
    zipobj.namelist()


import zipfile

# To retrieve information about the files in the archive
with zipfile.ZipFile("data.zip", "r") as zipobj:
    bar_info = zipobj.getinfo("sub_dir/bar.py")
    bar_info.file_size
    bar_info.date_time
    bar_info.compress_size
    bar_info.filename


# Extracting ZIP Archives

import zipfile
import os

os.listdir(".")


data_zip = zipfile.ZipFile("data.zip", "r")

# Extract a single file to current directory
data_zip.extract("file1.py")


os.listdir(".")


# Extract all files into a different directory
data_zip.extractall(path="extract_dir/")

os.listdir(".")


os.listdir("extract_dir")


data_zip.close()


# Extracting Data From Password Protected Archives
import zipfile

with zipfile.ZipFile("secret.zip", "r") as pwd_zip:
    # Extract from a password protected archive
    pwd_zip.extractall(path="extract_dir", pwd="Quish3@o")


# Creating New ZIP Archives
import zipfile

file_list = ["file1.py", "sub_dir/", "sub_dir/bar.py", "sub_dir/foo.py"]
with zipfile.ZipFile("new.zip", "w") as new_zip:
    for name in file_list:
        new_zip.write(name)


# Open a ZipFile object in append mode
with zipfile.ZipFile("new.zip", "a") as new_zip:
    new_zip.write("data.txt")
    new_zip.write("latin.txt")
