Как переименовать файл с кодировкой без ASCII-символа в ASCII

У меня есть имя файла «abc 枚 .xlsx», содержащее не-ASCII кодировку символов, и я хотел бы удалить все символы, отличные от ASCII, чтобы переименовать их в «abc.xlsx».

Вот что я пробовал:

import os import string os.chdir(src_dir) #src_dir is a path to my directory that contains the odd file for file_name in os.listdir(): new_file_name = ''.join(c for c in file_name if c in string.printable) os.rename(file_name, new_file_name) 

Следующая ошибка возникает в os.rename() :

 builtins.WindowsError: (2, 'The system cannot find the file specified') 

Это в системе Windows, sys.getfilesystemencoding() дает мне mbcs , если это помогает любому.

Что мне делать, чтобы обойти эту ошибку и позволить мне изменить имя файла?

Здесь вы идете, это работает и с python 2.7

 import os import string for file_name in os.listdir(src_dir): new_file_name = ''.join(c for c in file_name if c in string.printable) os.rename(os.path.join(src_dir,file_name), os.path.join(src_dir, new_file_name)) 

Ура! Не забудьте проголосовать, если найдете этот ответ полезным! 😉