Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

Common interface for compressed file manipulation

Project description

compfile Common interfaces for manipulating compressed files (lzma, gzip etc)

Build Status Documentation Status Coverage Status

Rationale

Sometimes, we need to deal with different compressed files. There are several packages/modules for compressed file manipulation, e.g., gzip module for "*.gz" files, lzma module for "*.lzma" and "*.xz" files, etc. If we want to support different types of compressed file in our project, probably we need to do the following:

if fnmatch.fnmatch(fname, "*.gz"):
    f = gzip.open(fname, 'rb')
    # do something with f
elif fnmatch.fnmatch(fname, "*.bz2'):
    f = bz2.open(fname, 'rb')
    # do something with f
else:
    # other stuffs

The problems of the above approch are:

  • We need to repeat the compression type inference logic everywhere we want to support different compression types.
  • Different compression type manipulation modules may have different API convention.

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

Installation

Install from PyPI

pip install compfile

Install from Anaconda

conda install -c liyugong compfile

Install from GitHub

pip install git+https://github.com/gongliyu/compfile.git@master

Simple example

Using compfile is pretty simple. Just construct a compfile.CompFile object or call compfile.open

with compfile.open(fname, 'r') as f:
    # do something with f

The object returned is a file object, so we can do ordinary file processing with it.

License

The compfile package is released under the MIT License

Documentation

https://compfile.readthedocs.io

Download files

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

Files for compfile, version 0.0.3
Filename, size File type Python version Upload date Hashes
Filename, size compfile-0.0.3-py2.py3-none-any.whl (3.9 kB) File type Wheel Python version py2.py3 Upload date Hashes View hashes
Filename, size compfile-0.0.3.tar.gz (5.0 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page