get_readable_fileobj, encoding=None, cache=False, show_progress=True, remote_timeout=None)[source]

Given a filename, pathlib.Path object or a readable file-like object, return a context manager that yields a readable file-like object.

This supports passing filenames, URLs, and readable file-like objects, any of which can be compressed in gzip, bzip2 or lzma (xz) if the appropriate compression libraries are provided by the Python installation.

name_or_objstr or file-like object

The filename of the file to access (if given as a string), or the file-like object to access.

If a file-like object, it must be opened in binary mode.

encodingstr, optional

When None (default), returns a file-like object with a read method that returns str (unicode) objects, using locale.getpreferredencoding as an encoding. This matches the default behavior of the built-in open when no mode argument is provided.

When 'binary', returns a file-like object where its read method returns bytes objects.

When another string, it is the name of an encoding, and the file-like object’s read method will return str (unicode) objects, decoded from binary using the given encoding.

cachebool, optional

Whether to cache the contents of remote URLs.

show_progressbool, optional

Whether to display a progress bar if the file is downloaded from a remote server. Default is True.


Timeout for remote requests in seconds (default is the configurable, which is 3s by default)

filereadable file-like object


This function is a context manager, and should be used for example as:

with get_readable_fileobj('file.dat') as f:
    contents =