Найти - Пользователи
Полная версия: ConfigParser и пути с кирилицей
Начало » Python для новичков » ConfigParser и пути с кирилицей
1
Cover Story
Всем доброго!
Не могу понять как записать путь в конфиг котором содержаться русские буквы?
#-*- coding:utf-8 -*-
import ConfigParser
import codecs
config = ConfigParser.RawConfigParser()#Подключаем ini-файл
config.readfp(codecs.open('invdrv.ini', 'r', 'cp1251'))#Задаем имя ini-файла
config.set('path', 'inpath', 'C:\Статьи Затрат ноябрь\затраты по автомашинам\затраты по машинам568.pdf'.encode('cp1251'))
fff = open('invdrv.ini', 'w')
config.write(fff)
fff.close()
Подскажите пожалуйста.
doza_and
config.set('path', 'inpath', u'машинам568.pdf'.encode('cp1251'))
with open("out.dat","wb") as fff:
config.write(fff)
А вообще - совет - не баловать пользователей. Пути с пробелами и буквами отличными от английских запретить. Сам всегда так делаю. В мануалах пишу софт не поддерживает и все тут. Избавляет от огромного числа проблем. Пользователи ведь и сами путают кодировки когда пишут конфиги а потом претензии почему путь не находится. Сторонний софт опирается на то, что в путях нет пробелов и прочее прочее прочее прочее …
Cover Story
Спасибо, но так то же появляются ошибки, по крайней мере у меня не получилось.
Подобрал модуль configobj с ним вроде бы все пучком.
Андрей Светлов
Если делаете ‘utf-8 c русскими буквами’.encode(cp1251') — будет мусор.
Нужно uft8 -> unicode -> cp1251.
doza_and правильно показал на ошибку — только не подчеркнул, где она.
Cover Story
Вы наверно имеете ввиду этот фрагмент:
u'машинам568.pdf'.encode('cp1251')
Буковка u, в своем скрипте я ее ставил. С отдельным именем файла он работает, но когда пишешь полный путь ругается. Ему не нравятся слеши.
Андрей Светлов
ur'путь\к\файлу'
Не забывайте про экранирование. Или двойные слеши ставьте.
Cover Story
Извиняюсь, как же я забыл.
Ну а если мой путь я беру с переменной
например так:
path = ‘C:\Статьи Затрат ноябрь\затраты по автомашинам\затраты по машинам568.pdf’
И path у меня используется в различных ситуациях. Тут как быть?
doza_and
У вас переменная не соответствует реальному пути. Сделайте ей print и увидите.
Рекомендую
path = u'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'
для большинства нормальных приложений это пройдет и под виндами
иначе
path = ur'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'
Cover Story
А в QLineEdit выводить допустим в том Qt тоже с ur писать? Это как то не очень красиво.
doza_and
ur“ ” это правила языка питон для литералов (способ забить строку именно такую как вы хотите) они достаточно красивые по моему мнению. Почитайте про литералы. Важно чтобы содержание строки было правильной юникодной строкой, а как вы этого добиваетесь неважно. Если хочется можно и bytearray набить этими данными. Про Qt ничего не скажу - там ведь наверное QString и в отличии от wx Наверное надо будет конвертить.
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