Come trovare le differenze tra due insiemi di dati in Python?

voti
0

Questo script è destinato a confrontare due file excel separati per le differenze e quindi scrivere le aggiunte e le eliminazioni a nuove tabelle. Il campo Meter_No è come sto individuando la riga. Ho ottenuto questo script per produrre un output, ma le uniche informazioni contenute sono per il campo che sto cercando. Sono ben consapevole del perché questo sta accadendo, ma non riesco a capire la correzione giusta. Vorrei una fila completa di informazioni nell'output finale, compresi gli altri campi.

So di usare l'asterisco per restituire tutti i campi nel cursore di ricerca, ma voglio applicare la ricerca stessa al campo Meter_No. Sto pensando in qualche parte del ciclo for è dove ho bisogno di farlo. Qualsiasi aiuto sarebbe apprezzato.

Inoltre, Sono nuovo di python quindi mi piacerebbe attenersi a ciò che è contenuto nella libreria ArcPy. So che questo script non è ottimale, ma è in un modo che io possa capire.

I moduli di importazione

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

print(modules imported)

variabili set

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)

convertire i file di Excel in tabelle

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)

prima del cursore di ricerca per eseguire la scansione del nuovo file di Excel

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

secondo cursore di ricerca per eseguire la scansione del vecchio file excel

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

print(searches complete)

trovare le differenze tra i due

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)

creare nuove tabelle per aggiungere i risultati a

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)
È pubblicato 14/02/2020 alle 00:04
fonte dall'utente
In altre lingue...                            

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