Python 2.7
В терминале скрипт отрабатывает нормально, на диске создаётся файл с именем на кириллице.
Запускаю в кроне - выдаёт ошибку:
from io import open
def cache_set(key, val, path=None):
if path is None:
path = u'%s/cache' % os.getcwd()
if isinstance(key, str):
key = key.decode('utf8')
if isinstance(val, str):
val = val.decode('utf8')
elif not isinstance(val, unicode):
val = str(val).decode('utf8')
with open(u'{0}/{1}'.format(path, key), 'w', encoding="utf-8") as f:
f.write(val)
return True
key = u"Пермь"
val = u"..."
cache_set(key, val)
Traceback (most recent call last):
...
with open(u'{0}/{1}'.format(path, key), 'w', encoding="utf-8") as f:
IOError: [Errno 2] No such file or directory: '/home/master/cache/\xd0\x9f\xd0\xb5\xd1\x80\xd0\xbc\xd1\x8c'
В crontab:
PYTHONIOENCODING=utf8
Что не так? И ведь не выдаёт ошибку кодирования/декодирования, а генерит закодированное имя.