Форум сайта python.su
0
Всем доброго!
Не могу понять как записать путь в конфиг котором содержаться русские буквы?
#-*- 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()
Офлайн
253
config.set('path', 'inpath', u'машинам568.pdf'.encode('cp1251'))
with open("out.dat","wb") as fff:
config.write(fff)Отредактировано (Май 21, 2011 18:27:05)
Офлайн
0
Спасибо, но так то же появляются ошибки, по крайней мере у меня не получилось.
Подобрал модуль configobj с ним вроде бы все пучком.
Отредактировано (Май 23, 2011 15:54:48)
Офлайн
14
Если делаете ‘utf-8 c русскими буквами’.encode(cp1251') — будет мусор.
Нужно uft8 -> unicode -> cp1251.
doza_and правильно показал на ошибку — только не подчеркнул, где она.
Офлайн
0
Вы наверно имеете ввиду этот фрагмент:
u'машинам568.pdf'.encode('cp1251')Офлайн
14
ur'путь\к\файлу'
Не забывайте про экранирование. Или двойные слеши ставьте.
Офлайн
0
Извиняюсь, как же я забыл.
Ну а если мой путь я беру с переменной
например так:
path = ‘C:\Статьи Затрат ноябрь\затраты по автомашинам\затраты по машинам568.pdf’
И path у меня используется в различных ситуациях. Тут как быть?
Офлайн
253
У вас переменная не соответствует реальному пути. Сделайте ей print и увидите.
Рекомендую
path = u'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'
для большинства нормальных приложений это пройдет и под виндами
иначе
path = ur'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'
Отредактировано (Май 25, 2011 08:11:04)
Офлайн
0
А в QLineEdit выводить допустим в том Qt тоже с ur писать? Это как то не очень красиво.
Офлайн
253
ur“ ” это правила языка питон для литералов (способ забить строку именно такую как вы хотите) они достаточно красивые по моему мнению. Почитайте про литералы. Важно чтобы содержание строки было правильной юникодной строкой, а как вы этого добиваетесь неважно. Если хочется можно и bytearray набить этими данными. Про Qt ничего не скажу - там ведь наверное QString и в отличии от wx Наверное надо будет конвертить.
Офлайн