Comment trouver les différences entre deux ensembles de données en Python?

voix
0

Ce script est destiné à comparer deux fichiers Excel séparés pour les différences et écrire les ajouts et les suppressions de nouvelles tables. Le champ « Meter_No » est de savoir comment j'identifier la ligne. Je suis devenu ce script pour produire une sortie, mais la seule information contenue est pour le domaine que je cherche. Je suis bien conscient de pourquoi cela se passe, mais ne peut pas trouver la bonne solution. Je voudrais une ligne complète d'informations dans la sortie finale, y compris les autres domaines.

Je sais que d'utiliser l'astérisque pour retourner tous les champs dans le curseur de recherche, mais je veux appliquer la recherche elle-même dans le champ « Meter_No ». Je pense quelque part dans la boucle est là où je dois le faire. Toute aide serait appréciée.

De plus, je suis nouveau python donc je voudrais en tenir à ce qui est contenu dans la bibliothèque arcpy. Je sais que ce script n'est pas optimale, mais il est d'une manière que je peux comprendre.

modules d'importation

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

print(modules imported)

variables définies

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)

convertir des fichiers Excel aux tables

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)

premier curseur de recherche pour analyser le nouveau fichier Excel

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

deuxième curseur de recherche pour analyser l'ancien fichier excel

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

print(searches complete)

trouver les différences entre les deux

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)

créer de nouvelles tables pour append résultats à

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)
Créé 14/02/2020 à 00:04
source utilisateur
Dans d'autres langues...                            

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