Hogyan lehet megtalálni a különbség a két adatsor Python?

szavazat
0

Ez a szkript hivatott összehasonlítani két különböző excel fájl eltéréseit és írjuk be a kiegészítések és törlések az új táblákat. A „Meter_No” mező milyen vagyok azonosító sor. Kaptam ezt a forgatókönyvet, hogy készítsen egy kimenet, de az egyetlen információ van a területen keresem. Tisztában vagyok, hogy miért történik ez, de nem tud rájönni a megfelelő javítást. Szeretnék egy teljes sor információt a végső kimenet, beleértve az egyéb területeken.

Tudom, hogy használja a csillag, hogy visszatérjen az összes mezőt a keresési kurzor, de azt akarom, hogy alkalmazza a keresési magát a „Meter_No” mezőben. Gondolkodom valahol a for ciklus, ahol szükség van rá. Minden segítséget szívesen vennénk.

Továbbá, nem vagyok új python, így szeretnék ragaszkodni mi szereplő arcpy könyvtárban. Tudom, hogy ez a script nem optimális, de olyan módon, hogy meg tudom érteni.

import modulok

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

print(modules imported)

set változó

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)

konvertálni Excel fájlokat táblázatok

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)

első keresési kurzort, hogy átvizsgálja az új excel fájl

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

a második keresés kurzort, hogy átvizsgálja a régi excel fájl

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

print(searches complete)

megtalálni a különbségeket a két

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)

új táblákat hozzáfűzni eredmények

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)
A kérdést 14/02/2020 00:04
a forrás felhasználó
Más nyelveken...                            

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