Skip to main content

Utilities for working with files.

Project description

xphyle: extraordinarily simple file handling

PyPI Travis CI Coverage Status Codacy Badge Documentation Status DOI JOSS

logo

xphyle is a small python library that makes it easy to open compressed files. Most importantly, xphyle will use the appropriate program (e.g. 'gzip') to compress/decompress a file if it is available on your system; this is almost always faster than using the corresponding python library. xphyle also provides methods that simplify common file I/O operations.

Recent version of xphyle (4.0.0+) require python 3.6. Older versions of xphyle support python 3.4+.

Please note that xphyle may work on Windows, but it is not tested.

Installation

pip install xphyle

Building from source

Clone this repository and run

make

Example usages:

from xphyle import *
from xphyle.paths import STDIN, STDOUT

# Open a compressed file...
myfile = xopen('infile.gz')

# ...or a compressed stream
# e.g. gzip -c afile | python my_program.py
stdin = xopen(STDIN)

# Easily write to the stdin of a subprocess
with open_('|cat', 'wt') as process:
    process.write('foo')

# We have to tell xopen what kind of compression
# to use when writing to stdout
stdout = xopen(STDOUT, compression='gz')

# The `open_` method ensures that the file is usable with the `with` keyword.
# Print all lines in a compressed file...
with open_('infile.gz') as myfile:
    for line in myfile:
        print(line)

# ... or a compressed URL
with open_('http://foo.com/myfile.gz') as myfile:
    for line in myfile:
        print(line)

# Transparently handle paths and file objects
def dostuff(path_or_file):
    with open_(path_or_file) as myfile:
        for line in myfile:
            print(line)

# Read all lines in a compressed file into a list
from xphyle.utils import read_lines
lines = list(read_lines('infile.gz'))

# Sum the rows in a compressed file where each line is an integer value
total = sum(read_lines('infile.gz', convert=int))

See the Documentation for full usage information.

Supported compression formats

  • gzip (uses igzip or pigz if available)
  • bgzip
  • bzip2 (uses pbzip2 if available)
  • lzma
  • zstd

Issues

Please report bugs and request enhancements using the issue tracker.

Roadmap

Future releases are mapped out using GitHub Projects.

Citing xphyle

Didion, JP (2017) xphyle: Extraordinarily simple file handling. Journal of Open Source Software; doi:10.21105/joss.00255

Acknowledgements

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

xphyle-4.4.4.tar.gz (1.4 MB view details)

Uploaded Source

Built Distribution

xphyle-4.4.4-py3-none-any.whl (58.9 kB view details)

Uploaded Python 3

File details

Details for the file xphyle-4.4.4.tar.gz.

File metadata

  • Download URL: xphyle-4.4.4.tar.gz
  • Upload date:
  • Size: 1.4 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for xphyle-4.4.4.tar.gz
Algorithm Hash digest
SHA256 2ec69c1e795d0c35ecc0a4572cb1eb6647b79d0f8746646cd3f6159c33e2ce2c
MD5 05a4563be8d755a9c76833157dbf7290
BLAKE2b-256 73497e55ce45b42c91727638e549a8be400606cd1057b0aee0e28b1fffa6b30f

See more details on using hashes here.

File details

Details for the file xphyle-4.4.4-py3-none-any.whl.

File metadata

  • Download URL: xphyle-4.4.4-py3-none-any.whl
  • Upload date:
  • Size: 58.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.12

File hashes

Hashes for xphyle-4.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 229accb765621e09b48f67627a46939a902bf26a67338a03d6d20689e78653d2
MD5 c9a1e8efcbadb975bce2a23f5b322e58
BLAKE2b-256 a274c17f17b6783651497027d0eee83dcda252657e0a0b1a9f9baf870e5a748d

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page