Уведомления

Группа в Telegram: @pythonsu

#1 Май 21, 2011 16:05:20

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

Всем доброго!
Не могу понять как записать путь в конфиг котором содержаться русские буквы?

#-*- 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()
Подскажите пожалуйста.



Python 2.7.3
Pyside 1.1.2

Офлайн

#2 Май 21, 2011 18:01:27

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

config.set('path', 'inpath', u'машинам568.pdf'.encode('cp1251'))
with open("out.dat","wb") as fff:
config.write(fff)
А вообще - совет - не баловать пользователей. Пути с пробелами и буквами отличными от английских запретить. Сам всегда так делаю. В мануалах пишу софт не поддерживает и все тут. Избавляет от огромного числа проблем. Пользователи ведь и сами путают кодировки когда пишут конфиги а потом претензии почему путь не находится. Сторонний софт опирается на то, что в путях нет пробелов и прочее прочее прочее прочее …



Отредактировано (Май 21, 2011 18:27:05)

Офлайн

#3 Май 23, 2011 15:44:54

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

Спасибо, но так то же появляются ошибки, по крайней мере у меня не получилось.
Подобрал модуль configobj с ним вроде бы все пучком.



Python 2.7.3
Pyside 1.1.2

Отредактировано (Май 23, 2011 15:54:48)

Офлайн

#4 Май 23, 2011 19:29:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

ConfigParser и пути с кирилицей

Если делаете ‘utf-8 c русскими буквами’.encode(cp1251') — будет мусор.
Нужно uft8 -> unicode -> cp1251.
doza_and правильно показал на ошибку — только не подчеркнул, где она.



Офлайн

#5 Май 24, 2011 14:33:15

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

Вы наверно имеете ввиду этот фрагмент:

u'машинам568.pdf'.encode('cp1251')
Буковка u, в своем скрипте я ее ставил. С отдельным именем файла он работает, но когда пишешь полный путь ругается. Ему не нравятся слеши.



Python 2.7.3
Pyside 1.1.2

Офлайн

#6 Май 24, 2011 21:00:55

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

ConfigParser и пути с кирилицей

ur'путь\к\файлу'
Не забывайте про экранирование. Или двойные слеши ставьте.



Офлайн

#7 Май 25, 2011 06:58:47

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

Извиняюсь, как же я забыл.
Ну а если мой путь я беру с переменной
например так:
path = ‘C:\Статьи Затрат ноябрь\затраты по автомашинам\затраты по машинам568.pdf’
И path у меня используется в различных ситуациях. Тут как быть?



Python 2.7.3
Pyside 1.1.2

Офлайн

#8 Май 25, 2011 08:10:16

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

У вас переменная не соответствует реальному пути. Сделайте ей print и увидите.
Рекомендую
path = u'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'
для большинства нормальных приложений это пройдет и под виндами
иначе
path = ur'C: /Статьи Затрат ноябрь/затраты по автомашинам/затраты по машинам568.pdf'



Отредактировано (Май 25, 2011 08:11:04)

Офлайн

#9 Май 25, 2011 12:23:18

Cover Story
От:
Зарегистрирован: 2008-08-26
Сообщения: 192
Репутация: +  0  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

А в QLineEdit выводить допустим в том Qt тоже с ur писать? Это как то не очень красиво.



Python 2.7.3
Pyside 1.1.2

Офлайн

#10 Май 25, 2011 13:30:46

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

ConfigParser и пути с кирилицей

ur“ ” это правила языка питон для литералов (способ забить строку именно такую как вы хотите) они достаточно красивые по моему мнению. Почитайте про литералы. Важно чтобы содержание строки было правильной юникодной строкой, а как вы этого добиваетесь неважно. Если хочется можно и bytearray набить этими данными. Про Qt ничего не скажу - там ведь наверное QString и в отличии от wx Наверное надо будет конвертить.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version