Actualizar campos con valores de la lista de Python usando ArcPy UpdateCursor

Oct 14 2020

Actualmente estoy intentando actualizar los campos de un shapefile, con una lista que he compilado fuera del entorno arcpy. Probar tanto UpdateCursor que parece que no puedo hacer funcionar, y FieldCalculator. FieldCalculator simplemente lo actualiza con "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")

También probé:

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)

Y UpdateCursor está en blanco.

Sé que podría crear un .txt de la lista, luego actualizar los campos con la línea en el archivo .txt con InsertCursor, pero creo que debería haber una forma más eficiente de hacer esto. Para el contexto, estoy creando shapefiles de puntos de X / Y a partir de los datos exif, y quiero completar el nombre de la imagen correspondiente.

Respuestas

2 AnnaForrest Oct 14 2020 at 08:26

Para arreglar la declaración de la calculadora de campo, cámbiela a:

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