[Python-ideas] Add a context manager to keep stream position unchanged

Dmitry Kazakov jsbfox at gmail.com
Sun Mar 29 19:04:12 CEST 2015


I propose adding a context manager to contextlib module, which would
restore the stream position of its argument at exit:

    with contextlib.closing(file_like_object) as file:
        file.read(1)
        old = file.tell()
        with contextlib.keep_stream_position(file) as f:
            assert file is f
            assert file_like_object is f
            # Do something with the file(-like) object e.g. feed it
            # to `PIL.Image.open` (will consume the whole stream)

        assert file.tell() == old

This CM would allow us to reuse streams efficiently, without requiring
to call seek() explicitly. I will open a new issue and submit a patch
in case of favorable responses.


More information about the Python-ideas mailing list