def _replace_invalid_filesystem_chars(self, filename): """ Replaces characters in <filename> that cannot be saved to the disk with underscore and returns the cleaned-up name. """ unsafe_chars = portability.invalid_filesystem_chars() translation_table = {} replacement_char = u'_' for char in unsafe_chars: translation_table[ord(char)] = replacement_char return filename.translate(translation_table)
def _replace_invalid_filesystem_chars(self, filename): """ Replaces characters in <filename> that cannot be saved to the disk with underscore and returns the cleaned-up name. """ unsafe_chars = portability.invalid_filesystem_chars() translation_table = {} replacement_char = u'_' for char in unsafe_chars: translation_table[ord(char)] = replacement_char new_name = filename.translate(translation_table) # Make sure the filename does not contain portions that might # traverse directories, i.e. do not allow absolute paths # and paths containing ../ normalized = os.path.normpath(new_name) return normalized.lstrip('..' + os.sep).lstrip(os.sep)