# Py7za ("pizza")
Python wrapper for running the 7za.exe utility from https://www.7-zip.org/
The wrapper simply runs the application in a separate process and added functionality primarily aimed at running the tool in several parallel processes from the command-line.
Other than providing that utility, the wrapper tries to provide users Python API access to 7za in a way as simple, and as close to the original as possible. See some documentation for the command line options here https://sevenzip.osdn.jp/chm/cmdline/index.htm (no affiliation).
Additionally, the package contains the generic `AsyncIOPool` class, which allows you to queue up a large number of asynchronous tasks, and it will keep a certain number of them running at all times, until all tasks are done. This works for any `asyncio` `Task`, but can be handily combined with the `Py7za` class.
Finally, a command line utility `py7za-box` ("pizza box", and its aliases `box` and `unbox`) is included, which allows you to quickly replace individual files with their zipped equivalent in-place and vice versa, without writing any code. The idea is that a user may want to zip many files in a large project, without removing them from their original location, and still be able to find them by name and easily extract them individually.
For more information, check the [Py7za documentation at Read the Docs (py7za.readthedocs.io)](https://py7za.readthedocs.io).
## Install
Install the package for use from scripts:
```commandline
pip install py7za
```
Of if you want to use the command-line interface `py7za-box` as well, make sure the dependencies for it are installed like this:
```commandline
pip install py7za[box]
py7za-box --help
box --help
unbox --help
```
On Linux, you will have to have `p7zip` installed for `py7za` to work, as there is no Linux binary included in the package. For example:
```commandline
sudo yum install -y p7zip
sudo apt-get install -y p7zip
```
### Command line py7za-box
To quickly replace every .csv file in a directory and in all its subdirectories with a zip-file containing that .csv:
```commandline
py7za-box **/*.csv
```
And the reverse:
```commandline
py7za-box **/*.csv.zip --unbox
```
More in the documentation https://py7za.readthedocs.io
## Dependencies
The only external dependency is on `conffu` for the configuration of the command-line tool. If you only want to use the Py7za class, and just use `pip install py7za`, this dependency won't be installed. To install the dependency, use `pip install py7za[box]`.
## License
This package is licensed under the MIT license. See [LICENSE.txt](https://gitlab.com/Jaap.vanderVelde/py7za/-/blob/master/LICENSE.txt).
## Changelog
See [CHANGELOG.md](https://gitlab.com/Jaap.vanderVelde/py7za/-/blob/master/CHANGELOG.md).
Raw data
{
"_id": null,
"home_page": "https://gitlab.com/Jaap.vanderVelde/py7za",
"name": "py7za",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "package",
"author": "BMT, Jaap van der Velde",
"author_email": "jaap.vandervelde@bmtglobal.com",
"download_url": "https://files.pythonhosted.org/packages/74/ac/a875ec225875f522a9da3e0ebe6e7ef98e2739840c5e6522cc17046ee0db/py7za-0.4.3.tar.gz",
"platform": null,
"description": "# Py7za (\"pizza\")\r\n\r\nPython wrapper for running the 7za.exe utility from https://www.7-zip.org/\r\n\r\nThe wrapper simply runs the application in a separate process and added functionality primarily aimed at running the tool in several parallel processes from the command-line.\r\n\r\nOther than providing that utility, the wrapper tries to provide users Python API access to 7za in a way as simple, and as close to the original as possible. See some documentation for the command line options here https://sevenzip.osdn.jp/chm/cmdline/index.htm (no affiliation).\r\n\r\nAdditionally, the package contains the generic `AsyncIOPool` class, which allows you to queue up a large number of asynchronous tasks, and it will keep a certain number of them running at all times, until all tasks are done. This works for any `asyncio` `Task`, but can be handily combined with the `Py7za` class.\r\n\r\nFinally, a command line utility `py7za-box` (\"pizza box\", and its aliases `box` and `unbox`) is included, which allows you to quickly replace individual files with their zipped equivalent in-place and vice versa, without writing any code. The idea is that a user may want to zip many files in a large project, without removing them from their original location, and still be able to find them by name and easily extract them individually.\r\n\r\nFor more information, check the [Py7za documentation at Read the Docs (py7za.readthedocs.io)](https://py7za.readthedocs.io).\r\n\r\n## Install\r\n\r\nInstall the package for use from scripts:\r\n```commandline\r\npip install py7za\r\n```\r\n\r\nOf if you want to use the command-line interface `py7za-box` as well, make sure the dependencies for it are installed like this: \r\n```commandline\r\npip install py7za[box]\r\npy7za-box --help\r\nbox --help\r\nunbox --help\r\n```\r\n\r\nOn Linux, you will have to have `p7zip` installed for `py7za` to work, as there is no Linux binary included in the package. For example:\r\n```commandline\r\nsudo yum install -y p7zip\r\nsudo apt-get install -y p7zip\r\n```\r\n\r\n### Command line py7za-box\r\n\r\nTo quickly replace every .csv file in a directory and in all its subdirectories with a zip-file containing that .csv:\r\n```commandline\r\npy7za-box **/*.csv\r\n```\r\n\r\nAnd the reverse:\r\n```commandline\r\npy7za-box **/*.csv.zip --unbox\r\n```\r\n\r\nMore in the documentation https://py7za.readthedocs.io\r\n\r\n## Dependencies\r\n\r\nThe only external dependency is on `conffu` for the configuration of the command-line tool. If you only want to use the Py7za class, and just use `pip install py7za`, this dependency won't be installed. To install the dependency, use `pip install py7za[box]`.\r\n\r\n## License\r\n\r\nThis package is licensed under the MIT license. See [LICENSE.txt](https://gitlab.com/Jaap.vanderVelde/py7za/-/blob/master/LICENSE.txt).\r\n\r\n## Changelog\r\n\r\nSee [CHANGELOG.md](https://gitlab.com/Jaap.vanderVelde/py7za/-/blob/master/CHANGELOG.md).\r\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Description",
"version": "0.4.3",
"project_urls": {
"Download": "https://gitlab.com/Jaap.vanderVelde/py7za/repository/archive.zip?ref=0.4.3",
"Homepage": "https://gitlab.com/Jaap.vanderVelde/py7za"
},
"split_keywords": [
"package"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "74aca875ec225875f522a9da3e0ebe6e7ef98e2739840c5e6522cc17046ee0db",
"md5": "6795ce344bee2e1b4ebc7de8519324c6",
"sha256": "77d7487c3c7fc7d12175ecabed05855364e7cfeaf234c7c271fc01e4bf6b764d"
},
"downloads": -1,
"filename": "py7za-0.4.3.tar.gz",
"has_sig": false,
"md5_digest": "6795ce344bee2e1b4ebc7de8519324c6",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 650994,
"upload_time": "2025-07-25T04:24:12",
"upload_time_iso_8601": "2025-07-25T04:24:12.481272Z",
"url": "https://files.pythonhosted.org/packages/74/ac/a875ec225875f522a9da3e0ebe6e7ef98e2739840c5e6522cc17046ee0db/py7za-0.4.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-07-25 04:24:12",
"github": false,
"gitlab": true,
"bitbucket": false,
"codeberg": false,
"gitlab_user": "Jaap.vanderVelde",
"gitlab_project": "py7za",
"lcname": "py7za"
}