Atualizando campos com valores da lista Python usando ArcPy UpdateCursor

Oct 14 2020

Atualmente, estou tentando atualizar os campos de um arquivo de forma, com uma lista que compilei fora do ambiente arcpy. Tentando UpdateCursor, que não consigo fazer funcionar, e FieldCalculator. FieldCalculator apenas o atualiza com "P [2]"

photoname = []

for p in shp_list:
    name = p[2]
    photoname.append(name)

    # arcpy.CalculateField_management(out_shapefile,"PhotoName","'p[2]'","PYTHON_9.3")

Eu também tentei:

updt_cursor = arcpy.da.UpdateCursor(out_shapefile, fields)
for row in updt_cursor:
    val = str(row[0])
    for p in shp_list:
        if val in p:
            row[2] = p_name
            updt_cursor.updateRow(row)

E UpdateCursor está em branco.

Sei que poderia criar um .txt da lista e, em seguida, atualizar os campos com a linha no arquivo .txt com InsertCursor, mas acho que deve haver uma maneira mais eficiente de fazer isso. Para o contexto, estou criando shapefiles de ponto de X / Y a partir dos dados exif e desejo preencher o nome da imagem correspondente.

Respostas

2 AnnaForrest Oct 14 2020 at 08:26

Para corrigir a instrução da calculadora de campo, altere-a para:

arcpy.CalculateField_management(out_shapefile,"PhotoName","'" + p[2] + "'","PYTHON_9.3")