Комментарии к ответу
tbicr:
>>0. Укажите версию питона.
Если речь и разделении Python2/3, то разве этот код вообще сможет запуститься на Python3? Там же в принципе нельзя указать u-префикс строкам, т.к. он идет по умолчанию.
>>1. Узнайте что за исключение кидается except Exception as exception
Исключения при перекодировке строк — общий родитель для них в данном случае UnicodeError.
Комментарии к ТС:
1) Вы пишите u«utf-8», но при этом «Ошибка в имени файла...» без u-префикса. Лучше наоборот :)
2) Чем меньше вложенность — тем лучше (в разумных пределах). Вместо
if file.endswith(".txt"):
P = os.path.join(path, file)
...
лучше написать:
if not file.endswith(".txt"):
continue
P = os.path.join(path, file)
...
Плоское лучше, чем вложенное.
Flat is better than nested.
3) if os.path.isdir(path) == True:
не надо так. просто
if os.path.isdir(path):
4) вместо
for (path, dirs, files) in os.walk(path):
for file in files:
converter(path, file)
можно использовать
glob.