Wie die Unterschiede zwischen zwei Datensätzen in Python zu finden?

stimmen
0

Dieses Skript soll zwei separate Excel-Dateien für Unterschiede vergleichen und dann die Ergänzungen schreiben und die Streichungen in neuen Tabellen. Das „Meter_No“ Feld ist, wie ich die Zeile bin zu identifizieren. Ich habe dieses Skript bekommen eine Ausgabe zu erzeugen, aber die einzige Information enthalten ist, für das Feld I der Suche bin. Ich bin mir sehr wohl bewusst, warum dies geschieht, kann aber nicht die richtigen fix herauszufinden. Ich möchte eine komplette Reihe von Informationen, die in der endgültigen Ausgabe, einschließlich den in anderen Bereichen.

Ich weiß, dass das Sternchen verwenden, um alle Felder in der Suche Cursor zurückzukehren, aber ich möchte die Suche selbst in die „Meter_No“ Feld anzuwenden. Ich denke, irgendwo in der for-Schleife ist, wo ich es tun müssen. Jede Hilfe wäre sehr geschätzt.

Ich bin auch neu in Python so ich bleiben möchte, was in der ArcPy Bibliothek enthalten ist. Ich weiß, dass dieses Skript nicht optimal ist, aber es ist in einer Weise, dass ich verstehen kann.

Importmodule

import arcpy
arcpy.env.workspace = rM:\GISTransfer\BOD_Round_Project\Relaunch
arcpy.env.overwriteOutput = True

print(modules imported)

Setvariablen

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)

konvertieren Excel-Dateien in Tabellen

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)

erstes Such Cursor die neue Excel-Datei scannen

with arcpy.da.SearchCursor(newDBF, fld) as newCursor:
    for row in newCursor:
        newList.append(row)

zweite Such Cursor die alte Excel-Datei scannen

with arcpy.da.SearchCursor(oldDBF, fld) as oldCursor:
    for row in oldCursor:
        oldList.append(row)

print(searches complete)

finden Sie die Unterschiede zwischen den beiden

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)

Erstellen neuer Tabellen anhängen Ergebnisse

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)
Veröffentlicht am 13/02/2020 um 22:04
quelle vom benutzer
In anderen Sprachen...                            

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more