Скрипт python не видит символ "й" на Ubuntu
OSError: MoviePy error: the file /root/snegurochka/materials/sound/boy/Дмитрий.mp3 could not be found!
Please check that you entered the correct path.
Важный момент, что все отлично работает со всеми другими именами, которые не содержат букву "й".
Не понимаю в чем может быть проблема. Конечно можно просто вместо "й" написать "и", но в данном случае такой вариант невозможен.
На системе установлен русский и если вывести ls в директории с файлами, то все имена, в том числе и с буквами "й", отображаются корректно.
Ответы (1 шт):
Автор решения: Dmitry Artamonov
→ Ссылка
В этой статье все разложено по полочкам: https://habr.com/ru/post/262679/
Проблема решилась переименованием с нормализацией юникода:
from unicodedata import normalize
import os
import sys
import os.path
directory_1 = '/root/snegurochka/materials/sound/comments'
inputnames_1 = os.listdir(directory_1)
inputnames_1.sort()
inputnames_1 = inputnames_1[1:] # это для удаления вспомогательного файла .DS на маке
for x in inputnames_1:
# print(str(x[:-4]))
# file.write(x[:-4] + '\n')
nx = normalize('NFC', x[:-4])
# print(str(nx))
os.rename(f"/root/snegurochka/materials/sound/comments/{x[:-4]}.mp3", f"/root/snegurochka/materials/sound/comments/{str(nx)}.mp3")