Skip to main content

Common interface for archive manipulation

Project description

arlib: Common interface for archive manipulation

Build Status Documentation Status Coverage Status

Table of Contents

Rationale

Sometimes, we need to deal with different archive files. There are several packages/modules for archive file manipulation, e.g., zipfile for "*.zip" files, tarfile for "*.tar.gz" or "*.tar.bz2" files, etc. If we want to support different archive type in our project, probably we need to do the following:

if zipfile.is_zipfile(file):
    ar = zipfile.ZipFile(file)
    f = ar.open('member-name')
    # some processing
elif zipfile.is_tarfile(file):
    ar = tarfile.open(file)
    f = ar.extractfile('member-name')
    # some processing
else:
    # other stuffs

The problems of the above approach are:

  • We need repeat the above code everywhere we want to support different archive types.
  • Different archive manipulation modules (e.g. zipfile and tarfile) may have different API convention.

arlib is designed to solve the above problems. It abstracts the logic of archive manipulations and provides a single high level interface for users.

Installation

Install from PyPI

pip install arlib

Install from Anaconda

conda install -c liyugong arlib

Simple example

The simplest way to use arlib is through the arlib.Archive class.

Open archive

By construct an arlib.Archive object, we can open an archive file for read or write.

The constructor of arlib.Archive also works as a factory which automatically create engine with type determined by the file properties and the mode argument. Therefore,

ar = arlib.Archive('abc.tar.gz', 'r')

will create an object of type arlib.TarArchive, and

ar = arlib.Archive('abc.zip', 'r')

will create an object of type arlib.ZipArchive if the corresponding files exist and are real tar or zip files.

List member names

The property member_names will return a list of the names of members contained in the archive, e.g.,

print(ar.member_names)

Open a member

Use the method open_member to open a member in the archive as a file object

with ar.open_member('a.txt', 'r') as f:
    # do sth by using f as an opened file object

License

The arlib package is released under the MIT License

Documentation

https://arlib.readthedocs.io/en/latest/

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

arlib-0.0.3.tar.gz (6.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

arlib-0.0.3-py2.py3-none-any.whl (5.7 kB view details)

Uploaded Python 2Python 3

File details

Details for the file arlib-0.0.3.tar.gz.

File metadata

  • Download URL: arlib-0.0.3.tar.gz
  • Upload date:
  • Size: 6.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for arlib-0.0.3.tar.gz
Algorithm Hash digest
SHA256 a425afb4725b141b46269c6a9e77b2d8c13c5fbb7d92f03877091e170811c625
MD5 ac8d4c3f70ce0341816d668aae417987
BLAKE2b-256 2e8e39c764d1af363b59cd0e22e0626df9a6bb54c2524af3b034deb3a9547069

See more details on using hashes here.

File details

Details for the file arlib-0.0.3-py2.py3-none-any.whl.

File metadata

  • Download URL: arlib-0.0.3-py2.py3-none-any.whl
  • Upload date:
  • Size: 5.7 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.12.1 pkginfo/1.4.2 requests/2.19.1 setuptools/40.2.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.6.6

File hashes

Hashes for arlib-0.0.3-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 0b6e118fe71878082e144d5e2fb045a6b59a851795cb26d7077e56553971a221
MD5 4dc970a05a8bb190d8f02f016cfca965
BLAKE2b-256 829c460d0d13e61bb07243f6f023936738e0a6863c4d43c00ea8e69962f58ba9

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