Skip to main content

Python ctypes interface for 7z.dll (7-Zip archive library)

Project description

7z.py

PyPI - Version PyPI - Python Version PyPI - License Tests

Python ctypes interface for 7z.dll (the 7-Zip archive library).Supports reading, extracting, and creating 7z archives with optional password protection and real-time progress callbacks - all via the native 7-Zip COM interface, no subprocess required.

Windows only - requires a 7z.dll for the matching architecture. Bundles 7z.dll for x64, x86, and ARM64.


Installation

uv add 7z.py

or

pip install 7z.py

Python 3.12+ and Windows are required.


Quick start

List entries

from py7z import ArchiveReader

with ArchiveReader("archive.7z") as reader:
    for entry in reader.list_entries():
        print(entry.path, entry.size)

Extract all

from pathlib import Path
from py7z import ArchiveReader

with ArchiveReader("archive.7z") as reader:
    reader.extract_all(output_dir=Path("out/"))

Create an archive

from pathlib import Path
from py7z import ArchiveWriter, ArchiveEntryInput

entries = [ArchiveEntryInput.from_path(p) for p in Path("src/").rglob("*")]

with ArchiveWriter("archive.7z") as writer:
    writer.write(entries)

Progress callbacks

from py7z import ArchiveWriter, ArchiveEntryInput, ProgressInfo

def on_progress(info: ProgressInfo) -> None:
    print(info.summary)

entries = [ArchiveEntryInput.from_path(p) for p in Path("src/").rglob("*")]

with ArchiveWriter("archive.7z") as writer:
    writer.write(entries, progress_cb=on_progress)

ProgressInfo.summary produces output like:

 42.3%  9.5 MB/s  elapsed 0:05  rem 0:02  [3/5 files]  'src/foo.py'

Password protection

# Create
with ArchiveWriter("secret.7z", password="hunter2") as writer:
    writer.write(entries)

# Extract
with ArchiveReader("secret.7z", password="hunter2") as reader:
    reader.extract_all(output_dir=Path("out/"))

Platform support

Wheel tag Architecture
win_amd64 x64 (64-bit)
win32 x86 (32-bit)
win_arm64 ARM64

License

MIT - see LICENSE. Bundles 7z.dll (LGPL-2.1-or-later).


About Modding Forge

7z.py was built for the Python tooling powering Modding Forge - a community dedicated to Skyrim modding. If you enjoy modding or want to connect with other modders, come say hi!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

7z_py-1.0.3-py3-none-win_arm64.whl (817.6 kB view details)

Uploaded Python 3Windows ARM64

7z_py-1.0.3-py3-none-win_amd64.whl (886.6 kB view details)

Uploaded Python 3Windows x86-64

7z_py-1.0.3-py3-none-win32.whl (721.8 kB view details)

Uploaded Python 3Windows x86

File details

Details for the file 7z_py-1.0.3-py3-none-win_arm64.whl.

File metadata

  • Download URL: 7z_py-1.0.3-py3-none-win_arm64.whl
  • Upload date:
  • Size: 817.6 kB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for 7z_py-1.0.3-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 cf74d959d24ad820b0794a7f76ca06955406a3e90deb7e40f1418fa0dc38bb60
MD5 96c81c052cd687d89aa0ce4320bf7427
BLAKE2b-256 ce3ec0af2ad510cf1bd76239697508e7f5896ff499d102fc583141eb9d99c92a

See more details on using hashes here.

File details

Details for the file 7z_py-1.0.3-py3-none-win_amd64.whl.

File metadata

  • Download URL: 7z_py-1.0.3-py3-none-win_amd64.whl
  • Upload date:
  • Size: 886.6 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for 7z_py-1.0.3-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 a30cae7b518b2c64fbd0daebc8e744fa4da54718c697c2f5812758b3a33e6921
MD5 1ca727bec7b8083752cfd23ce72c5975
BLAKE2b-256 5f91ae88bbfe1bb8b18179e20e3e285f1d7db4b4d57bef648f56e96d06660722

See more details on using hashes here.

File details

Details for the file 7z_py-1.0.3-py3-none-win32.whl.

File metadata

  • Download URL: 7z_py-1.0.3-py3-none-win32.whl
  • Upload date:
  • Size: 721.8 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.8 {"installer":{"name":"uv","version":"0.11.8","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for 7z_py-1.0.3-py3-none-win32.whl
Algorithm Hash digest
SHA256 eaabbd306064629bcc57f34b318fee6def6b0643fdb8e701ce7d908d8a3adf9b
MD5 8e5162faaf009d1308b1dec4b672750b
BLAKE2b-256 9071389c5cd1ac59f2797c3da6b8cc17c954ff0044ac6bff1940a252624a8c81

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page