![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
всем привет! у меня возникает проблема при работе с sax
не могу понять в чем ошибка Traceback (most recent call last): File "loadtest1.py", line 63, in <module> load() File "loadtest1.py", line 60, in load parser.parse(os.path.join(os.getcwd(), "test1.xml")) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 301, in start_element self._cont_handler.startElement(name, AttributesImpl(attrs)) File "loadtest1.py", line 49, in startElement biblioteka.chitateli[attr.getValue(u'cod')], File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 291, in getValue return self._attrs[name] KeyError: u'cod' Помогите!!!Объясните в чем проблема |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: нет Всего: 173 |
Код где?
Телепатическим методом попробую догадаться, что происходит запрос несуществующего у данного node атрибута. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
представляю Вашему вниманию код xml-документа:
<?xml version="1.0" encoding="utf-8"?> <библиотека> <читатели> <читатель адрес="Саратов" имя="Юрий" кодчитателя="1" отчество="Николаевич" телефон="12-52-63" фамилия="Кукарев"/> <читатель адрес="Саратов" имя="Андрей" кодчитателя="3" отчество="Максимов" телефон="32-86-52" фамилия="Ерофеев"/> <читатель адрес="Саратов1" имя="Олег" кодчитателя="2" отчество="Никифорович" телефон="12-68-36" фамилия="Лавров"/> <читатель адрес="Саратов" имя="Сергей" кодчитателя="4" отчество="Олегович" телефон="78-15-64" фамилия="Русланов"/> </читатели> <авторы> <автор ФИО="Пупкин Я.Я." кодавтора="1"> <книга жанр="научная литература" залоговаястоимость="10" кодкниги="1" название="Экономика" стоимостьпроката="5"> <выдачакниги датавозврата="21.12.2003" датавыдачи="12.12.2001" кодчитателя="Кукарев Юрий Николаевич"/> <выдачакниги датавозврата="13.01.2007" датавыдачи="12.01.2007" кодчитателя="Лавров Олег Никифорович"/> </книга> <книга жанр="учебное пособие" залоговаястоимость="20" кодкниги="2" название="Маркетинг" стоимостьпроката="5"> <выдачакниги датавозврата="23.02.2007" датавыдачи="14.01.2007" кодчитателя="Ерофеев Андрей Максимов"/> </книга> </автор> <автор ФИО="Черкасов В.Н." кодавтора="3"> <книга жанр="пособие для преподавателей" залоговаястоимость="10" кодкниги="4" название="Информационная безопасность" стоимостьпроката="5"> <выдачакниги датавозврата="" датавыдачи="12.01.2007" кодчитателя="Кукарев Юрий Николаевич"/> </книга> </автор> <автор ФИО="Путятинский А.Н." кодавтора="2"> <книга жанр="учебное пособие" залоговаястоимость="50" кодкниги="3" название="Информатика" стоимостьпроката="5"> <выдачакниги датавозврата="13.03.2007" датавыдачи="12.01.2007" кодчитателя="Русланов Сергей Олегович"/> </книга> </автор> <автор ФИО="Мухина М.К." кодавтора="5"/> <автор ФИО="Ганиа М.Ю." кодавтора="4"/> <автор ФИО="test7" кодавтора="7"> <книга жанр="h" залоговаястоимость="h" кодкниги="h" название="h" стоимостьпроката="h"/> </автор> </авторы> </библиотека> а вот и загрузка данныз из него же: def load(): class Handler(xml.sax.handler.ContentHandler): def __init__(self): xml.sax.handler.ContentHandler.__init__(self) self.avtor = None self.kniga = None def startElement(self, name, attr): if name == u'читатель': chit = biblioteka.chitatel(attr.getValue(u'кодчитателя'), attr.getValue(u'фамилия').encode('utf-8'), attr.getValue(u'имя').encode('utf-8'), attr.getValue(u'отчество').encode('utf-8'), attr.getValue(u'адрес').encode('utf-8'), attr.getValue(u'телефон') ) biblioteka.chitateli[chit.codchitately] = chit elif name == u'автор': self.avtor = biblioteka.avtor(attr.getValue(u'кодавтора'), attr.getValue(u'ФИО').encode('utf-8') ) biblioteka.avtors[self.avtor.codavtora] = self.avtor elif name == u'книга': self.kniga = biblioteka.kniga(attr.getValue(u'кодкниги'), attr.getValue(u'название').encode('utf-8'), self.avtor, attr.getValue(u'залоговаястоимость'), attr.getValue(u'стоимостьпроката'), attr.getValue(u'жанр').encode('utf-8') ) biblioteka.knigi[self.kniga.codknigi] = self.kniga self.avtor.addkniga(self.kniga) elif name == u'выдачакниги': self.knigavidana = biblioteka.knigavidana(self.kniga, biblioteka.chitateli[attr.getValue(u'кодчитателя')], attr.getValue(u'датавыдачи').encode('utf-8'), attr.getValue(u'датавозврата').encode('utf-8') ) biblioteka.knigavidanay.append(self.knigavidana) def endElement(self, name): pass parser = xml.sax.make_parser() parser.setContentHandler(Handler()) parser.parse(os.path.join(os.getcwd(), "test1.xml")) if __name__ == '__main__': load()а ошибка следующая: File "test1.py", line 78, in <module> save() File "test1.py", line 15, in save loadtest1.load() File "/home/cvetlana/biblioteka/loadtest1.py", line 61, in load parser.parse(os.path.join(os.getcwd(), "test1.xml")) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 107, in parse xmlreader.IncrementalParser.parse(self, source) File "/usr/lib64/python2.5/xml/sax/xmlreader.py", line 123, in parse self.feed(buffer) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 207, in feed self._parser.Parse(data, isFinal) File "/usr/lib64/python2.5/xml/sax/expatreader.py", line 301, in start_element self._cont_handler.startElement(name, AttributesImpl(attrs)) File "/home/cvetlana/biblioteka/loadtest1.py", line 49, in startElement biblioteka.chitateli[attr.getValue(u'кодчитателя')], KeyError: u'\u041a\u0443\u043a\u0430\u0440\u0435\u0432 \u042e\u0440\u0438\u0439 \u041d\u0438\u043a\u043e\u043b\u0430\u0435\u0432\u0438\u0447' если меня все на транслит это дело не спасает((( я уже правда не могу понять в чем дело |
|||
|
||||
pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 2 Всего: 36 |
cvetik, используй, пожалуйста, подсветку кода
|
|||
|
||||
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
прошу прощения, теперь буду все выделять
![]() |
|||
|
||||
Goganchic |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 678 Регистрация: 18.6.2004 Репутация: нет Всего: 5 |
cvetik, и где выделение? Скопируй плз хотя бы 78-ю строчку, в которой ошибка-то возникает
|
|||
|
||||
_Viper_ |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 87 Регистрация: 8.11.2006 Репутация: нет Всего: 11 |
К тому же код не полный и невозможно покрутить это у себя.
Заметил одну странность в данных для книги кодчитателя="Кукарев Юрий Николаевич" а для читателя кодчитателя="1". |
|||
|
||||
cvetik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 43 Регистрация: 30.4.2008 Репутация: нет Всего: нет |
спасибо!!!!!Ошибка была в том, что когда писался код для сохранения в xml я писала str()для кода читателя а это неправильно, соответственно вместо кода 1 получался код Кукарев))))
Радость пушистого комочка не имеет предела, теперь буду бегать отсчастья по шкафам и диванам. За сим расланиваюсь мурлыкая и ласкаясь. Ваш комочек ![]() |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |