Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > unicode .. снова |
Автор: amar0k 15.7.2009, 12:14 | ||
имеем програмку, которая бежит по заданым папкам и создает на все файлы линки в другом месте. файлы на английском русском и иврите. если запускать из терминала или через ГУИ программы - все путем но если задать автозапуск через crontab - все время вылетает :
падает соответственно тут: for root, dirs, files in os.walk(lastBackUp+src) обе переменныe могут быть на любом из 3-х языков. все в юникоде. почему падает ТОЛЬКО при вызове через crontab ?? |
Автор: powerfox 25.7.2009, 14:18 | ||
Вы уверены, что без кронтаба проверили на всех языках? Попробуйте так:
|
Автор: amar0k 29.8.2009, 14:37 |
unicode(lastBackUp+src, 'utf-8') - тоже не сработал. а вот string.encode('utf-8') для каждой строки, что передается параметром в os.walk() и os.path.join() таки помогло. хотя странно, при запуске в живую никаких проблем небыло.. нашел еще несколько топиков в гугле с такой же проблемой.. но в любом случае для меня этот "костыль" подходит ![]() рано обрадовался.. после пары тестов снова стали вылетать ... мля |
Автор: av0000 30.8.2009, 10:05 |
Аналогичная ситуация... (Ubuntu 8.10) Даже хуже - похоже, "теряется" stdout. По симптомам - если для запущенного процесса не создана нормальная консоль, ему сильно всё урезается. В данном случае, похоже, выставляется локаль по-умолчанию "ascii". Возможно, спасут глобальные установки LANG, LC_ALL и т.п. Для себя решал запуском через su - с лишним bash-ем в памяти готов мириться... |
Автор: amar0k 2.9.2009, 15:11 | ||
можно поподробнее? |
Автор: av0000 2.9.2009, 15:58 | ||||
Было как-то так:
НО! Поскольку падения таки не совсем прекратились (там, правда exception-ы ещё были виноваты), переделал весь вывод на logging с передачей имени файла лога как параметра. Да и редирект stderr-а, показалось, не(-всегда) срабатывает. Можно, конечно, помудрить с подменой stdout, но лень и стандартнее сделать через logging:
|