Есть два способа изменить это:
1) (Linux только) export LC_CTYPE=en_US.UTF8
перед запуском Python:
$ LC_CTYPE=C python -c 'import sys; print(sys.getfilesystemencoding())'
ANSI_X3.4-1968
$ LC_CTYPE=C.UTF-8 python -c 'import sys; print(sys.getfilesystemencoding())'
UTF-8
Обратите внимание, что LANG служит в качестве значения по умолчанию для LC_CTYPE, если это не множество, в то время как LC_ALL перекрывает LC_CTYPE и LANG)
2) monkeypatching:
import sys
sys.getfilesystemencoding = lambda: 'UTF-8'
Оба метода позволяют функциям типа os.stat
принимать строки unicode (python2.x). В противном случае эти функции вызывают исключение, если в имени файла отображаются символы не-ascii.
метод 1 не работает или мне – sureshvv
@sureshvv Какая у вас ОС? –
Ubuntu 16.04. Пришлось добавить LANG = en_US.UTF8 в/etc/environment и перезагрузиться. – sureshvv