У меня есть набор кода на недавно установленной машине, который мне нужно активировать. По сути, это скрипт, который преобразует файл .dat в стиле xml в файл .csv, создавая временный файл в качестве посредника и преобразуя текст с помощью функции convert (). По-видимому, для этого используется исходный код с сайта pypi.org.
from xmlutils.xml2csv import xml2csv
import sys
xml_source = sys.argv[1]
obj_name = sys.argv[2]
filename_temp = xml_source + '.temp'
filename_csv = xml_source.replace('.dat','') + '.csv'
fin = open(xml_source)
fout = open(filename_temp, "wt")
fout.write("<root>")
for line in fin:
fout.write( line.replace("<?xml version='1.0' encoding='UTF-8'?>", '') )
fout.write("</root>")
fin.close()
fout.close()
converter = xml2csv(filename_temp, filename_csv)
converter.convert(tag=obj_name)
Ниже приведен пример ввода в формате xml, который переводится построчно, группируется в одну запись в файле .csv. файл по тегу. Вывод будет одной строкой файла .csv.
<?xml version='1.0' encoding='UTF-8'?>
<Account>
<Name>Alta Paints & Coatings Inc</Name>
<Type>Non Customer</Type>
<RecordTypeId>012E0000000PR3uIAG</RecordTypeId>
<ShippingStreet>136 W 3300 S</ShippingStreet>
<ShippingCity>Salt Lake City</ShippingCity>
<ShippingState>UT</ShippingState>
<ShippingPostalCode>84115-3704</ShippingPostalCode>
<Phone>801-466-9625</Phone>
<Sic>5198</Sic>
<NumberOfEmployees>16</NumberOfEmployees>
<Description>PAINTS, VARNISHES, AND SUPPLIES</Description>
<Sales_Channel__c>NAAO</Sales_Channel__c>
<Xerox_Address_1__c>136 W 3300 S</Xerox_Address_1__c>
<Xerox_City__c>Salt Lake City</Xerox_City__c>
<Duns__c>197857873</Duns__c>
<Legal_Name__c>ALTA PAINTS & COATINGS, INC.</Legal_Name__c>
<Secondary_Name__c />
<Latitude__c>40.699928</Latitude__c>
<Longitude__c>-111.895096</Longitude__c>
<Map_Status__c>G_GEO_SUCCESS</Map_Status__c>
<Xerox_County__c>SALT LAKE</Xerox_County__c>
<Xerox_State__c>UT</Xerox_State__c>
<Xerox_Zip_4__c>3704</Xerox_Zip_4__c>
<County__c>SALT LAKE</County__c>
<Department__c>1</Department__c>
<Franchise__c />
<County_Code__c>035</County_Code__c>
<Domestic_Ultimate_DUNS_Number__c>197857873</Domestic_Ultimate_DUNS_Number__c>
<Global_Ultimate_DUNS_Number__c>197857873</Global_Ultimate_DUNS_Number__c>
<Headquarters_DUNS_Number__c>197857873</Headquarters_DUNS_Number__c>
<Location_Employee_Qty__c>16</Location_Employee_Qty__c>
<Xerox_Zip_Code__c>84115-3704</Xerox_Zip_Code__c>
<Org_Group_Code__c>1</Org_Group_Code__c>
<Parent_DUNS__c />
<Potential_Copy_Dupl_Qty__c>4974.4</Potential_Copy_Dupl_Qty__c>
<Potential_Printing_Sys_Qty__c>10152.0</Potential_Printing_Sys_Qty__c>
<Telephone_Last_4__c />
<Subsidiary_Indicator__c>0</Subsidiary_Indicator__c>
<Trade_Name__c />
<XNAC_Code__c />
<XNAC_Division__c />
<Zip_4__c>3704</Zip_4__c>
<Customer_Indicator__c>0.0</Customer_Indicator__c>
<Franchise_Parent__c />
<Telephone_Area_Code__c>801</Telephone_Area_Code__c>
<Telephone_Exchange__c>466</Telephone_Exchange__c>
<Total_Lsr_Prtg_Vol__c>0.0</Total_Lsr_Prtg_Vol__c>
<Open_Sales_Channel__c>USCO</Open_Sales_Channel__c>
<Estab_Copy_Volume__c>0.0</Estab_Copy_Volume__c>
</Account><?xml version='1.0' encoding='UTF-8'?>
<Account>
<Name>Alta Paints & Coatings Inc</Name>
<Type>Non Customer</Type>
<RecordTypeId>012E0000000PR3uIAG</RecordTypeId>
<ShippingStreet>136 W 3300 S</ShippingStreet>
<ShippingCity>Salt Lake City</ShippingCity>
<ShippingState>UT</ShippingState>
<ShippingPostalCode>84115-3704</ShippingPostalCode>
<Phone>801-466-9625</Phone>
<Sic>5198</Sic>
<NumberOfEmployees>16</NumberOfEmployees>
<Description>PAINTS, VARNISHES, AND SUPPLIES</Description>
<Sales_Channel__c>NAAO</Sales_Channel__c>
<Xerox_Address_1__c>136 W 3300 S</Xerox_Address_1__c>
<Xerox_City__c>Salt Lake City</Xerox_City__c>
<Duns__c>197857873</Duns__c>
<Legal_Name__c>ALTA PAINTS & COATINGS, INC.</Legal_Name__c>
<Secondary_Name__c />
<Latitude__c>40.699928</Latitude__c>
<Longitude__c>-111.895096</Longitude__c>
<Map_Status__c>G_GEO_SUCCESS</Map_Status__c>
<Xerox_County__c>SALT LAKE</Xerox_County__c>
<Xerox_State__c>UT</Xerox_State__c>
<Xerox_Zip_4__c>3704</Xerox_Zip_4__c>
<County__c>SALT LAKE</County__c>
<Department__c>1</Department__c>
<Franchise__c />
<County_Code__c>035</County_Code__c>
<Domestic_Ultimate_DUNS_Number__c>197857873</Domestic_Ultimate_DUNS_Number__c>
<Global_Ultimate_DUNS_Number__c>197857873</Global_Ultimate_DUNS_Number__c>
<Headquarters_DUNS_Number__c>197857873</Headquarters_DUNS_Number__c>
<Location_Employee_Qty__c>16</Location_Employee_Qty__c>
<Xerox_Zip_Code__c>84115-3704</Xerox_Zip_Code__c>
<Org_Group_Code__c>1</Org_Group_Code__c>
<Parent_DUNS__c />
<Potential_Copy_Dupl_Qty__c>4974.4</Potential_Copy_Dupl_Qty__c>
<Potential_Printing_Sys_Qty__c>10152.0</Potential_Printing_Sys_Qty__c>
<Telephone_Last_4__c />
<Subsidiary_Indicator__c>0</Subsidiary_Indicator__c>
<Trade_Name__c />
<XNAC_Code__c />
<XNAC_Division__c />
<Zip_4__c>3704</Zip_4__c>
<Customer_Indicator__c>0.0</Customer_Indicator__c>
<Franchise_Parent__c />
<Telephone_Area_Code__c>801</Telephone_Area_Code__c>
<Telephone_Exchange__c>466</Telephone_Exchange__c>
<Total_Lsr_Prtg_Vol__c>0.0</Total_Lsr_Prtg_Vol__c>
<Open_Sales_Channel__c>GIS</Open_Sales_Channel__c>
<Estab_Copy_Volume__c>0.0</Estab_Copy_Volume__c>
</Account><?xml version='1.0' encoding='UTF-8'?>
<Account>
<Name>Sun & Moon Cafe</Name>
<Type>Non Customer</Type>
<RecordTypeId>012E0000000PR3uIAG</RecordTypeId>
<ShippingStreet>22929 Highway 99</ShippingStreet>
<ShippingCity>Edmonds</ShippingCity>
<ShippingState>WA</ShippingState>
<ShippingPostalCode>98026-8468</ShippingPostalCode>
<Phone>425-977-2929</Phone>
<Sic>5812</Sic>
<NumberOfEmployees>9</NumberOfEmployees>
<Description>EATING PLACES</Description>
<Sales_Channel__c>NAAO</Sales_Channel__c>
<Xerox_Address_1__c>22929 Highway 99</Xerox_Address_1__c>
<Xerox_City__c>Edmonds</Xerox_City__c>
<Duns__c>031593575</Duns__c>
<Legal_Name__c>SUN & MOON CAFE</Legal_Name__c>
<Secondary_Name__c />
<Latitude__c>47.791194</Latitude__c>
<Longitude__c>-122.337749</Longitude__c>
<Map_Status__c>G_GEO_SUCCESS</Map_Status__c>
<Xerox_County__c>SNOHOMISH</Xerox_County__c>
<Xerox_State__c>WA</Xerox_State__c>
<Xerox_Zip_4__c>8468</Xerox_Zip_4__c>
<County__c>SNOHOMISH</County__c>
<Department__c />
<Franchise__c />
<County_Code__c>061</County_Code__c>
<Domestic_Ultimate_DUNS_Number__c />
<Global_Ultimate_DUNS_Number__c />
<Headquarters_DUNS_Number__c />
<Location_Employee_Qty__c>9</Location_Employee_Qty__c>
<Xerox_Zip_Code__c>98026-8468</Xerox_Zip_Code__c>
<Org_Group_Code__c>0</Org_Group_Code__c>
<Parent_DUNS__c />
<Potential_Copy_Dupl_Qty__c>994.5</Potential_Copy_Dupl_Qty__c>
<Potential_Printing_Sys_Qty__c>1976.67</Potential_Printing_Sys_Qty__c>
<Telephone_Last_4__c />
<Subsidiary_Indicator__c>0</Subsidiary_Indicator__c>
<Trade_Name__c />
<XNAC_Code__c />
<XNAC_Division__c />
<Zip_4__c>8468</Zip_4__c>
<Customer_Indicator__c>0.0</Customer_Indicator__c>
<Franchise_Parent__c />
<Telephone_Area_Code__c>425</Telephone_Area_Code__c>
<Telephone_Exchange__c>977</Telephone_Exchange__c>
<Total_Lsr_Prtg_Vol__c>0.0</Total_Lsr_Prtg_Vol__c>
<Open_Sales_Channel__c>USCO</Open_Sales_Channel__c>
<Estab_Copy_Volume__c>0.0</Estab_Copy_Volume__c>
</Account><?xml version='1.0' encoding='UTF-8'?>
На моем предыдущем компьютере я смог ввести путь к имени сценария преобразования python, к файлу .dat в стиле xml. имя, дескриптор учетной записи и процесс соответственно.
Пример:
C:\data\convert_xml_to_csv.py C:\data\csv\2020-02-13-estab-insert.dat Account
Сначала я получил сообщение об ошибке, что программа не была доступна, поэтому я в конце концов нашел страницу для загрузки последняя версия Python (v 3.8.1). Я выбрал исполняемую версию для загрузки x86-64. После этого команда просто переходит на следующую строку без каких-либо действий или чего-либо обработанного. Я не уверен, нужно ли мне загружать что-либо еще со страницы исходного кода xmlutils или что делать дальше. Возможно, мне придется пройтись по остальной части процесса, чтобы активировать этот скрипт на новом компьютере. Это было передано однажды, но создатель больше не с компанией. Кто-нибудь может мне помочь?
Joao,
Поэтому я скачал последнюю версию Python (версия 3.8.1), определил путь к установочному файлу .exe и добавил его Путь в переменных среды. Пути приведены на скриншотах 2 и 3 ниже:
Затем я попытался запустить свой скрипт из Powershell, однако он просто пропустил следующую строку без создания выходного файла. Затем я попытался запустить тот же сценарий в командной строке, и это привело к тому, что модуль xmlutils не был найден.
Похоже, мне, возможно, придется загрузить пакет xmlutils с сайта PyPl. Но, похоже, сейчас у меня нет четкого способа сделать это, запустив файл .tar.gz.
Обновление: 2/18/20
Полагаю, я успешно установили последнюю версию пакета xmlutils python с помощью команды pip. Сделав это, я снова попытался преобразовать файл, который не распознает часть кода. Мое единственное предположение с этой ошибкой на данный момент состоит в том, что это ошибка, связанная с обновленной версией этой программы. Кто-нибудь может сделать необходимые настройки здесь на основе этой информации?
Обновление: 3/5/2020
Таким образом, после установки xmlutils и пакета setuptools, где оба находятся в пути к переменным среды, запуск сценария теперь фактически создает клонированный временный файл. подать этот сценарий обычным делом Однако он оставляет файл назначения готового вывода пустым для файла .csv. У кого-нибудь есть какие-либо другие предложения относительно исправления этого?
xml2csv python Результат сценария - 5 марта
Ошибка преобразования с установленным xmlutils
Вывод командной строки
Python Результат проверки среды
Python Изображение пути
Путь к переменной среды