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

Uploaded Python 3Windows ARM64

7z_py-1.0.4-py3-none-win_amd64.whl (886.8 kB view details)

Uploaded Python 3Windows x86-64

7z_py-1.0.4-py3-none-win32.whl (722.0 kB view details)

Uploaded Python 3Windows x86

File details

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

File metadata

  • Download URL: 7z_py-1.0.4-py3-none-win_arm64.whl
  • Upload date:
  • Size: 817.8 kB
  • Tags: Python 3, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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.4-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 d56456676237754399de9200eb862b2ab0d7f8a62d234d321004c25a2a1460e2
MD5 cecc2c1c80959f8dba27c89d82b3e82c
BLAKE2b-256 34f9b743b20cb67cb464a78aef84b81c521535ad5ed46029e38c8da781208d78

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.4-py3-none-win_amd64.whl
  • Upload date:
  • Size: 886.8 kB
  • Tags: Python 3, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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.4-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 dea0372b6e9adbce43dc88a025187ff2da633c7adc2361b1e3e7ec658190d0f8
MD5 a4779b1e4634e630a16cacb79ce5bc01
BLAKE2b-256 779485664c474b06e6321763cb4b7586092c2b74e4fac39a696ddbb1541a3c29

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.4-py3-none-win32.whl
  • Upload date:
  • Size: 722.0 kB
  • Tags: Python 3, Windows x86
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.23 {"installer":{"name":"uv","version":"0.11.23","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.4-py3-none-win32.whl
Algorithm Hash digest
SHA256 0cb273545fff61d8446e8464dad343e5e2f89065f27c51234827b4cb2464a84d
MD5 71d995801ff2927fa46c0ad13b92f134
BLAKE2b-256 559500f09c79707e95995927dce55bbbb7e34ce73173ce4cb685d2f4c07d64b4

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