Skip to content

Repository files navigation

io-chunks

Man, I wish there was a way to split this opened file into smaller subfiles to read any part of it independently!

-- No one ever

I made a library for it anyway.

What's this?

This library contains utilities (well, one utility) to get a Python buffer from another buffer, allowing you to read from each of them separately.

Let me show you an example.

fromio_chunksimportRawIOChunkwithopen("test_file", "w") asfile_handle:
file_handle.write("Hello beautiful world!")
withopen("test_file", "rb") asfile_handle:
# Create a "chunk" with the first 5 byteschunk_hello=RawIOChunk(file_handle, 5)
# Create a "chunk" starting at position 16 with the last 6 byteschunk_world=RawIOChunk(file_handle, size=6, start=16)
# This prints b'Hello'print(chunk_hello.read())
# This prints b'world!'print(chunk_world.read())
# Now, this prints b'Hello beautiful world!' to demostrate that the original# `file_handle` pointer wasn't altered at all!print(file_handle.read())

Amazing, right?

Why?

While writing a parser I found this class to be somewhat useful, around 7 years ago.

While today I don't really see it today, I decided to clean it up and released it in case it's useful for someone.

Install

Use pip:

$ pip install io-chunks

Documentation

You can read it at readthedocs.

Run the tests

Create a venv with your favorite tool and activate it. Then, install the development dependencies and execute pytest:

$ pip install -r requirements-dev.txt
$ pytest

Alternatively, to execute the tests using tox:

$ pip install tox
$ tox

License

MIT

About

Stream chunks compatible with IO standard library

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages