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
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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf74d959d24ad820b0794a7f76ca06955406a3e90deb7e40f1418fa0dc38bb60
|
|
| MD5 |
96c81c052cd687d89aa0ce4320bf7427
|
|
| BLAKE2b-256 |
ce3ec0af2ad510cf1bd76239697508e7f5896ff499d102fc583141eb9d99c92a
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a30cae7b518b2c64fbd0daebc8e744fa4da54718c697c2f5812758b3a33e6921
|
|
| MD5 |
1ca727bec7b8083752cfd23ce72c5975
|
|
| BLAKE2b-256 |
5f91ae88bbfe1bb8b18179e20e3e285f1d7db4b4d57bef648f56e96d06660722
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eaabbd306064629bcc57f34b318fee6def6b0643fdb8e701ce7d908d8a3adf9b
|
|
| MD5 |
8e5162faaf009d1308b1dec4b672750b
|
|
| BLAKE2b-256 |
9071389c5cd1ac59f2797c3da6b8cc17c954ff0044ac6bff1940a252624a8c81
|