Tento skript je určen pro porovnání dvou samostatných souborů Excel pro rozdíly a pak psát dodatky a výmazy do nových tabulek. Pole „Meter_No“ je to, jak jsem identifikaci řádku. Dostal jsem tento skript produkovat výstup, ale pouze informace obsažené jsou pro obor pátrám. Jsem si dobře vědom toho, proč se to děje, ale nemůže přijít na tu správnou opravu. Chci kompletní řadu informací v konečném výstupu, včetně dalších oborech.
Znám použít hvězdičku vrátit všechna pole ve vyhledávacím kurzoru, ale chci použít vyhledávání sám do pole „Meter_No“. Přemýšlím někde v cyklu for je místo, kde musím to udělat. Jakýkoliv pomoci chtěl bych být ocenil.
Také, Jsem nový pythonu, takže bych chtěl držet toho, co je obsaženo v arcpy knihovně. Vím, že tento skript není optimální, ale je to tak, že mi rozumí.
import moduly
import arcpy
arcpy.env.workspace = rM:\GISTransfer\BOD_Round_Project\Relaunch
arcpy.env.overwriteOutput = True
print(modules imported)
nastavené proměnné
newXLSX = rM:\GISTransfer\BOD_Round_Project\Relaunch\Source_Data_TEST_copy.xlsx
oldXLSX = rM:\GISTransfer\BOD_Round_Project\Relaunch\Source_Data.xlsx
fld = [Meter_No]
newList = []
oldList = []
addList = []
delList = []
print(variables set)
Převod Excel souborů do tabulek
arcpy.ExcelToTable_conversion(newXLSX,newTB.dbf)
arcpy.ExcelToTable_conversion(oldXLSX,oldTB.dbf)
newDBF = rM:\GISTransfer\BOD_Round_Project\Relaunch\newTB.dbf
oldDBF = rM:\GISTransfer\BOD_Round_Project\Relaunch\oldTB.dbf
print(tables created)
První vyhledávání kurzor skenovat nový soubor Excel
with arcpy.da.SearchCursor(newDBF, fld) as newCursor:
for row in newCursor:
newList.append(row)
druhé hledání kurzoru skenovat starý soubor Excel
with arcpy.da.SearchCursor(oldDBF, fld) as oldCursor:
for row in oldCursor:
oldList.append(row)
print(searches complete)
najít rozdíly mezi těmito dvěma
for a in newList:
if a not in oldList:
addList.append(a)
for d in oldList:
if d not in newList:
delList.append(d)
print(differences identified)
vytvářet nové tabulky připojit výsledky
arcpy.CreateTable_management(M:\GISTransfer\BOD_Round_Project\Relaunch, Additions.dbf, newDBF)
arcpy.CreateTable_management(M:\GISTransfer\BOD_Round_Project\Relaunch, Deletions.dbf, oldDBF)
with arcpy.da.InsertCursor(Additions.dbf, fld) as addCursor:
for add in addList:
addCursor.insertRow(add)
with arcpy.da.InsertCursor(Deletions.dbf, fld) as deLCursor:
for deL in delList:
deLCursor.insertRow(deL)
print(results appended)
print(script complete)