self.fp = file if is_file_like else open(file, mode)
self.closefd = closefd

def __enter__(self):
    return self.fp

def __exit__(self, type_, value, traceback):
    generated = '\n'.join(self.spiffy_obj.gen_file())
self.fp.write(generated)
if self.closefd:
    self.fp.__exit__()
Как отличить файл, подобный объекту, от пути к файлу, подобному объекту