httpio icon indicating copy to clipboard operation
httpio copied to clipboard

Python library for reading HTTP resources as random-access file-like objects using the `Range` header

httpio

HTTP resources as random-access file-like objects

httpio is a small Python library that allows you to access files served over HTTP as file-like_ objects (which is to say that they support the interface of the standard library's BufferedIOBase_ class). It differs from libraries like urllib and requests in that it supports seek() (which moves an internal pointer), and that read() makes a request with the Range header set. It also supports caching of contents using a configurable block size, and will reuse TCP connections where possible.

Installation

Use pip to install httpio:

.. code-block:: console

$ pip install httpio

Usage

.. code-block:: python

import zipfile
import httpio

url = "http://some/large/file.zip"
with httpio.open(url) as fp:
    zf = zipfile.ZipFile(fp)
    print(zf.namelist())

.. _file-like: https://docs.python.org/3/glossary.html#term-file-object

.. _BufferedIOBase: https://docs.python.org/3/library/io.html#io.BufferedIOBase

Unit Tests

Unit tests are provided for the standard behaviours implemented by the library. They can be run with

.. code-block:: console

$ python -m unittest discover -s tests

or a tox.ini file is provided which allows the tests to be run in virtual environments using the tox tool:

.. code-block:: console

$ tox