Найти - Пользователи
Полная версия: Путь к домашней папке в локализованной винде и sqlite3
Начало » Python для новичков » Путь к домашней папке в локализованной винде и sqlite3
1
vovane
Когда получаю путь к домашней папке пользователя с помощью
os.path.expanduser('~')
или даже так:
homefolder = (os.getenv('HOME'))
if homefolder == "None":
homefolder = os.getenv('USERPROFILE')
то sqlite3 пишет, что не может получить доступ к базе данных в строке с созданием подключения. У меня имя пользователя на латинице, и все работает, а вот у друга с русским логином падает. Как заставить sqlite3 подключаться к базе данных в папке с русскими символами в имени? Семерка же вроде как использует юникод, то есть особо проблем быть не должно. Если есть идеи насчет ХР и прочих - давайте, тоже пригодится.
Заранее спасибо.
P.S.: честно гуглил и искал на форуме :)
pyuser
Попробуйте
homefolder = homefolder.decode(sys.getfilesystemencoding())
vovane
pyuser
Попробуйте
homefolder = homefolder.decode(sys.getfilesystemencoding())
Спасибо за ответ, но не сработало. Пишет:
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 9-15: ordinal not in range(128)

Я правильно понимаю, что система сообщает что использует ASCII для имен файлов, а decode натыкается при этом на кириллицу и выдает ошибку?
SergMare
vovane
pyuser
Попробуйте
homefolder = homefolder.decode(sys.getfilesystemencoding())
Спасибо за ответ, но не сработало. Пишет:
UnicodeEncodeError: ‘ascii’ codec can't encode characters in position 9-15: ordinal not in range(128)

Я правильно понимаю, что система сообщает что использует ASCII для имен файлов, а decode натыкается при этом на кириллицу и выдает ошибку?
В самом начале файла(1 строка) поставь
## -*- coding: cp1251 -*-
далее я использую следующую конструкцию:
import sys
reload( sys )
sys.setdefaultencoding( 'cp1251' )
это перед всеми импортами
У меня это прокатывает
vovane
В семерке от 1251 разве не отошли? Да и кроме того, должен же быть какой-то другой способ. Странно еще вот что - создал учетку с русским именем, и прога спокойно запустилась. Косяк явно в чем-то другом, использовал все тот же
homefolder = homefolder.decode(sys.getfilesystemencoding())
и работает как часы, но только у меня.
SergMare
vovane
В семерке от 1251 разве не отошли?
А Вы только для семерки программы создаете? сейчас соотношение систем примерно 50 на 50. Причем ХР встречается достаточно часто.
vovane
SergMare
vovane
В семерке от 1251 разве не отошли?
А Вы только для семерки программы создаете? сейчас соотношение систем примерно 50 на 50. Причем ХР встречается достаточно часто.
Нет, почему же. Просто прогу пишу чисто для себя, да и она у меня первая серьезная на питоне:) А так, самым главным при написании её у меня было, чтобы она без модификации кода запускалась как на семёрке (ноут), так и на Maemo (мобильник).
SergMare
Вообщем если нет определенного кодинга в начале модуля питона (## -*- coding: cp1251 -*-), питон по умолчанию обрабатывает строки в ‘ascii.
Именно поэтому возникают ошибки в Вашем случае.
Кодировку естественно можно выбрать любую (попробуйте например ’utf8'), но оптимальная для винды именно 1251, конкретно в нашем региональном случае.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB