Skip to main content

Utilities for working with files.

Project description

https://pypi.python.org/pypi/xphyle https://travis-ci.org/jdidion/xphyle Coverage Status Codacy Badge Documentation Status

xphyle: extraordinarily simple file handling

xphyle is a small python (3.3+) 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.

Installation

pip install xphyle

If you are using python 3.3 or 3.4, this will install one dependency: backports.typing.

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')

# 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.

Roadmap

Future releases are mapped out using GitHub Projects.

Developers

We welcome any contributions via pull requests. Style-wise, we try to adhere to the Google python style guidelines. We use Google-style docstrings, which are formatted by the Napoleon Sphinx Plugin. We run pylint as part of each build and strive to maintain a 10/10 score. However, we disable some pylint checks:

  • Function annotations: pylint does not properly handle whitespace around function annotations (https://github.com/PyCQA/pylint/issues/238).

  • White space on empty lines: we use white space as a visual guide to the structure of the code. Each blank line should have whitespace matching the indent level of the next non-blank line.

  • Checks that are arbitrary/overly restrictive (e.g. ‘too-many-xxx’; see .pylintrc for full list)

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-3.0.1.tar.gz (757.6 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: xphyle-3.0.1.tar.gz
  • Upload date:
  • Size: 757.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for xphyle-3.0.1.tar.gz
Algorithm Hash digest
SHA256 9aed809d67e58dd33cf21c0c149cdb2b4c666fc4f1e58f0a2063bb4fd33ff8ec
MD5 272b7131892a9255bc3fc1f248e1cc2e
BLAKE2b-256 12badbf670ad9045ac33c965c617ea8d601c61a7a3240a8896bd2c3969aa5f43

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