Skip to main content

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

Project description

7z.py

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

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.2-py3-none-win_arm64.whl (817.3 kB view details)

Uploaded Python 3Windows ARM64

7z_py-1.0.2-py3-none-win_amd64.whl (886.3 kB view details)

Uploaded Python 3Windows x86-64

7z_py-1.0.2-py3-none-win32.whl (721.5 kB view details)

Uploaded Python 3Windows x86

File details

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

File metadata

  • Download URL: 7z_py-1.0.2-py3-none-win_arm64.whl
  • Upload date:
  • Size: 817.3 kB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.2-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 54087b854d2bef61bf2ff22bb4f9a1f6f682e88632d88c1b0b0720501cc6f3ee
MD5 5305f358498cc4c2e027ba17b4733367
BLAKE2b-256 d6f8d5c11d6f2498e9659c38c4f8025abd38e55411042cb5a7b0d9ce3bc25750

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.2-py3-none-win_amd64.whl
  • Upload date:
  • Size: 886.3 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.2-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dc54ffd60ccae3d12cc97b285997ff879c3df36f59c595ce7129ae150e1f5d7f
MD5 a25e5f66b0d064e5a6267e9d65caa9ea
BLAKE2b-256 c31a0a86eb9dd482d4b64c62b231c74bdb1a6f480501a1cce2e2fea5c0fc0f13

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.2-py3-none-win32.whl
  • Upload date:
  • Size: 721.5 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.6 {"installer":{"name":"uv","version":"0.11.6","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.2-py3-none-win32.whl
Algorithm Hash digest
SHA256 bd3c36836900ac3dd9269a010020c30c32027977f4856f6fa0cb9e98c76a993e
MD5 419a47508d0eddf23eff50f0efa21b14
BLAKE2b-256 0e44a3766aac95ca2772566cde0a3fb1e3a5c9a77f0c3489f0c71c3b445c13e5

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