def load(self, filename, ID3=None, **kwargs):
if ID3 is None:<EOL><INDENT>ID3 = self.ID3<EOL><DEDENT>else:<EOL><INDENT>self.ID3 = ID3<EOL><DEDENT>self.filename = filename<EOL>try:<EOL><INDENT>self.tags = ID3(filename, **kwargs)<EOL><DEDENT>except error:<EOL><INDENT>self.tags = None<EOL><DEDENT>if self.tags is not None:<EOL><INDENT>try:<EOL><INDENT>offset = self.tags.size<EOL><DEDENT>except AttributeError:<EOL><INDENT>offset = None<EOL><DEDENT><DEDENT>else:<EOL><INDENT>offset = None<EOL><DEDENT>try:<EOL><INDENT>fileobj = open(filename, "<STR_LIT:rb>")<EOL>self.info = self._Info(fileobj, offset)<EOL><DEDENT>finally:<EOL><INDENT>fileobj.close()<EOL><DEDENT>
Load stream and tag information from a file.

        A custom tag reader may be used in instead of the default
        mutagen.id3.ID3 object, e.g. an EasyID3 reader.