Jak najít rozdíly mezi dvěma soubory dat v Pythonu?

hlasů
0

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)
Položena 14/02/2020 v 00:04
zdroj uživatelem
V jiných jazycích...                            

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