'save(filething=None, v1=1, v2_version=4, v23_sep=\'/\', padding=None)
Save changes to a file.
Args:
filename (fspath):
Filename to save the tag to. If no filename is given,
the one most recently loaded is used.
v1 (ID3v1SaveOptions):
if 0, ID3v1 tags will be removed.
if 1, ID3v1 tags will be updated but not added.
if 2, ID3v1 tags will be created and/or updated
v2 (int):
version of ID3v2 tags (3 or 4).
v23_sep (text):
the separator used to join multiple text values
if v2_version == 3. Defaults to \'/\' but if it\'s None
will be the ID3v2v2.4 null separator.
padding (PaddingFunction)
Raises:
mutagen.MutagenError
By default Mutagen saves ID3v2.4 tags. If you want to save ID3v2.3
tags, you must call method update_to_v23 before saving the file.
The lack of a way to update only an ID3v1 tag is intentional.'

@convert_error(IOError, error)
@loadfile(writable=True, create=True)
def save(self, filething, v1=1, v2_version=4, v23_sep='/', padding=None):

    f = filething.fileobj
    try:
        header = ID3Header(filething.fileobj)
    except ID3NoHeaderError:
        old_size = 0
    else:
        old_size = header.size
    data = self._prepare_data(f, 0, old_size, v2_version, v23_sep, padding)
    new_size = len(data)
    if (old_size < new_size):
        insert_bytes(f, (new_size - old_size), old_size)
    elif (old_size > new_size):
        delete_bytes(f, (old_size - new_size), new_size)
    f.seek(0)
    f.write(data)
    self.__save_v1(f, v1)
