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 NanaZip's 7z.dll for x64, x86, and ARM64.


Installation

pip install 7z.py

Python 3.14+ 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.1-py3-none-win_arm64.whl (817.3 kB view details)

Uploaded Python 3Windows ARM64

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

Uploaded Python 3Windows x86-64

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

Uploaded Python 3Windows x86

File details

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

File metadata

  • Download URL: 7z_py-1.0.1-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.1-py3-none-win_arm64.whl
Algorithm Hash digest
SHA256 3ad68d3bdf7bbacb6026d5bf128c81739831a9e7cd4a8a2b968577ac8ffdd681
MD5 5fde4ef210520b3b74c3218aa52bd731
BLAKE2b-256 2ebcc0c6b8604b8edd6a46c011777cacbf39b51a2d49ccf5940e6e00b31de9c1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.1-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.1-py3-none-win_amd64.whl
Algorithm Hash digest
SHA256 da0e6b26e62607981cb56e1dc559461a664300ef0098d91b9198a32f9f062704
MD5 4a54071dcfc73663223cbfd2086425f4
BLAKE2b-256 c914e9106adde1b71e1983e7f751bcdae9d0ec05d48ed1b0e5397dd4e955e22b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: 7z_py-1.0.1-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.1-py3-none-win32.whl
Algorithm Hash digest
SHA256 fd038e3792b493f3a1b92143109868b70c54b06fca2a55f104569b7653f2a3d4
MD5 1e89bf80aae6eb296271b2f3faef7230
BLAKE2b-256 3ca10b68f35b0c368e43de0f26dbdeb62b0dd696fddfac31fd20289a1715792e

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