Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> преобразование txt в xml: NameError: dsIn, path_ to_ xls = dsIn[' PATH_ TO_ XLS'] 
:(
    Опции темы
bomberman
Дата 13.4.2009, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 4.4.2008
Где: Брест

Репутация: нет
Всего: нет



Приветсвую господа!

Светлой памяти вашим умам!

В общем, таваришчи, такая история: дан питонский код (в коем, признаюсь, я далеко не зверь. этот код как примочка к одной проге) для преобразования любого текстового файла в xml формат. Например содержимое тесктового файла вот такое:
Водка столичная|0.7|4.50| RUR
Пиво жигулевское|0.5|0.32| RUR
Портвейн 777 |0.8 |2.90 |RUR

А питонский код такой:
Код

#import cssutil 
import string 
 # convert( dsIn, dsOut) - функция с предопределенным именем и параметрами. 
 # Обратите внимание на строчные и прописные буквы – питон их различает в
 # именах.
def convert(dsIn, dsOut): 
 # На всякий случай очищаем параметр, который будет содержать
 # сформированный XML 
 dsOut.clear() 
 # В параметре dsIn передаётся следующая информация:
path_to_xls = dsIn[' PATH_ TO_ XLS'] # путь к файлу, включает имя файла
xml_set = dsIn['XML_SET'] # имя скрипта настроек 
out_path = dsIn[' PATH_ OUT'] # путь для сформированного файла
baseIn = dsIn[' IN_ BASE'] # признак импорта в базу данных
 # скрипт настроек – имя скрипта, созданного в задаче PYSCRIPT,
 # данные из которого могут использоваться при разборе входного
 # файла. Это может быть любой произвольный формат. В данном примере
 # не используется.
 # Путь для сформированного файла – в примере не используется,
 # поскольку импорт производится в БД
import msxml2
OutDoc = msxml2.DOMDocument() # - создаем выходной XML документ
 # далее идет формирование корневой вершины XML документа и 
 # определение значений её атрибутов. Имя корневой вершины – MSG, 
 # атрибуты, обязательные для заполнения:
 # FORMAT – код XML формата. В данном примере – ALKIMP
 # SENDER – код абонента отправителя. Абонент с указанным кодом должен 
 # быть зарегистрирован в системе
 # RECIPIENT – код абонента отправителя. Абонент с указанным кодом 
 # должен быть зарегистрирован в системе
root_node = OutDoc.createElement('MSG') 
root_node.setAttribute('FORMAT', 'ALKIMP') 
root_node.setAttribute('SENDER', '000000000') 
root_node.setAttribute('RECIPIENT', '000000000') 
OutDoc.appendChild(root_node) 
 # Обработка закачиваемого файла
f = open( path_to_xls) # открываем исходный файл
s = f.readline() # читаем первую строку файла
while s: 
   s = string. strip(s) # убираем лидирующие и конечные пробелы 
if s <> '':
     # разбиваем строку на отдельные поля по указанному разделителю
     sl = string. split( s, '|') 
     # Формируем узел нашего XML документа, для простоты предполагая,
     # что в строке все данные заполнены, т.е. она соответствует заявленному 
     # формату
     node = OutDoc.createElement('PLAN_ITEM') # новый узел 
     node.setAttribute('NAME', sl[0]) 
     node.setAttribute('VOLUME', sl[1]) 
     node.setAttribute('PRICE', sl[2]) 
     node.setAttribute('VAL_CODE', sl[3]) 
     root_node.appendChild(node) # добавляем новый узел к документу
s = f.readline() # читаем следующую строку файла
f.close() # строки кончились - закрываем файл
if baseIn=='1': # В настройках – “импорт в БД” 
 # помещаем текст получившегося XML документа в выходной параметр
   dsOut.append() 
   dsOut['XML_OUT'] = OutDoc.xml 
else: 
   print OutDoc.xml # можно использовать для отладки
del(OutDoc)


А сообщение об ошибке вот такое (в частности больше волнует второе):
Traceback (innermost last):
  File "C:\PROGRA~1\Python\Tools\idle\ScriptBinding.py", line 131, in run_module_event
    execfile(filename, mod.__dict__)
  File "C:\Program Files\Python\colvir\xml.py", line 11, in ?
    path_to_xls = dsIn[' PATH_ TO_ XLS'] #  # путь к файлу, включает имя файла
NameError: dsIn

Любые советы, комментарии и пожелания очень приветствуются!

Большое спасибо!

Это сообщение отредактировал(а) bomberman - 13.4.2009, 00:05
PM MAIL ICQ   Вверх
alex_smirnov
Дата 13.4.2009, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 194
Регистрация: 22.6.2007
Где: Санкт-Петербург

Репутация: 2
Всего: 4



Ну, дык:
Код

path_to_xls = dsIn['PATH_ TO_ XLS'] # путь к файлу, включает имя файла
xml_set = dsIn['XML_SET'] # имя скрипта настроек 
out_path = dsIn['PATH_ OUT'] # путь для сформированного файла
baseIn = dsIn['IN_ BASE'] # признак импорта в базу данных


переменная dsIn (и кто только учил переменные назвать?) есть переменная типа словарь, в котором по ключам должны быть записаны некоторые значения неких переменных. В данном контексте ключами являются 'PATH_ TO_ XLS' и пр. Т.к. dsIn ранее не был определен, Вам было выдано сообщение, NameError.

Настоятельно рекомендую прочитать первые сто страниц книги Гвидо ван Россума "Язык программирования питон (python)", есть в переводе на русский. Уверяю, большинство вопросов отпадет сразу.
PM GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0640 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.