Как переименовать файл с кодировкой без 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 , если это помогает любому.

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

One Solution collect form web for “Как переименовать файл с кодировкой без ASCII-символа в ASCII”

Здесь вы идете, это работает и с 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)) 

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

  • Как удалить содержимое файла перед записью в него в сценарии python?
  • 0 равно 0 == 0 (# означает значение True?)
  • Как узнать Python 2, если я уже знаю Python 3?
  • cx_Freeze 5.0: ImportError: нет модуля с именем 'scipy .__ config__'
  • Словарь Понимание в Python 3
  • Является ли "backporting" Python 3 `range` для Python 2 плохая идея?
  • Как сделать объект правильно хешируемым?
  • Загрузка файла .rds в Pandas
  • Python - лучший язык программирования в мире.