Python словарь только прокрутка последней записи - PullRequest
0 голосов
/ 24 марта 2020

У меня есть следующий сценарий

arcpy.env.overwriteOutput = True

d = {edit_database: utm_database, 'GTI_EDITING.DBO.': 'GTI_PUB_UTM.DBO.'}
e = {edit_database: wm_database, 'GTI_EDITING.DBO.': 'GTI_PUB_WM.DBO.'}

arcpy.env.workspace = edit_database
listBoundaries= arcpy.ListDatasets("*Boundaries")
for bounds in listBoundaries:
    inBound =os.path.join(edit_database, bounds)
    arcpy.env.workspace= inBound
    listBoundFC = arcpy.ListFeatureClasses()
    inpBound1 = []   
    for BoundC in listBoundFC:
        inputBoundFC = os.path.join(inBound, BoundC)
        outputBoundUTM = multiple_replace(inputBoundFC, d)
        outputBoundWM = multiple_replace(inputBoundFC, e)
        inpBound2 = (BoundC.replace('GTI_EDITING.DBO.', ''))
        inpBound1.append(inpBound2)
    print inpBound1

arcpy.env.workspace = utm_database
listBound1 = arcpy.ListDatasets("*Boundaries")
for Boundout in listBound1:
    OuBound = os.path.join( utm_database, Boundout)
    arcpy.env.workspace = OuBound
    listBoundFCoutput = arcpy.ListFeatureClasses()
    outBound1 = []
    for fcoutBound in listBoundFCoutput:
        outBound2 = (fcoutBound.replace('GTI_PUB_UTM.DBO.',''))
        outBound1.append(outBound2)

f = 0
g = 0
if inpBound1[f] <> outBound1[g]:
    arcpy.CopyFeatures_management(inputBoundFC, outputBoundUTM)
    arcpy.CopyFeatures_management(inputBoundFC, outputBoundWM)
    print (outputBoundUTM + " and " + outputBoundWM + " have been updated .")
f+=1
g+=1

Я настроил его так, чтобы он пролистывал функции, однако это только последняя функция, которая есть в словаре. Я перепробовал все, и либо он идет только к первой или последней записи в словаре. Кто-нибудь знает, что происходит, или словари просто не работают, и я должен сделать серию циклов for и if

1 Ответ

0 голосов
/ 30 марта 2020
arcpy.env.workspace = edit_database
listBoundaries= arcpy.ListDatasets("*Boundaries")
for bounds in listBoundaries:
    inBound =os.path.join(edit_database, bounds)
    arcpy.env.workspace= inBound
    listBoundFC = arcpy.ListFeatureClasses()
    inpBound1 = []
    for BoundC in listBoundFC:
        inputBoundFC = os.path.join(inBound, BoundC)
        outputBoundUTM = multiple_replace(inputBoundFC, d)
        outputBoundWM = multiple_replace(inputBoundFC, e)
        inpBound2 = BoundC.replace('GTI_EDITING.DBO.', '')
        inpBound1.append(inpBound2)
        print inpBound1
        if inpBound1[f] not in outBound1:
            arcpy.CopyFeatures_management(inputBoundFC, outputBoundUTM)
            arcpy.CopyFeatures_management(inputBoundFC, outputBoundWM)
            print (outputBoundUTM + " and " + outputBoundWM + " have been updated

Я обнаружил, что самый простой способ - сначала получить список, по которому вы проверяете, а затем создать запрос, чтобы проверить его по нему

...