stream io io fileio('myfile txt'br io bufferedreader(ftext_stream io textiowrapper(brencoding='utf- 'print('text_stream'text_streamprint('text_stream readable():'text_stream readable()print('text_stream seekable()'text_stream seekable()print('text_stream writeable()'text_stream writable()text_stream close(the output from this code snippet istext_stream text_stream readable()true text_stream seekable(true text_stream writeable(false closing streams all opened streams must be closed howeveryou can close the top level stream and this will automatically close lower level streamsfor examplef io fileio('data txt'br io bufferedreader(ftext_stream io textiowrapper(br'utf- 'print(text_stream read()text_stream close( returning to the open(function if streams are so good then why don' you use them all the timewell actually in python you dothe core open function (and indeed the io open(functionboth return stream object the actual type of object returned depends on the file mode specifiedwhether buffering is being used etc for example