import os def ellipsize(string: str, max_length: int, ellipsis="…") -> str: if len(string) <= max_length: return string if "." not in string: return string[:-len(ellipsis)] + ellipsis else: name, ext = os.path.splitext(string) name = name[:-len(ellipsis)] + ellipsis return ".".join([name, ext])