Más

Problema con la ejecución del bloque de código en el script de Python

Problema con la ejecución del bloque de código en el script de Python


Estoy tratando de calcular valores para un campo en una secuencia de comandos de Python, pero sigo recibiendo un error que no entiendo:

ExecuteError: ERROR 000539: Error al ejecutar la expresión: Fron000000F1 Traceback (última llamada más reciente): Archivo "", línea 1, en  NameError: el nombre 'Fron000000F1' no está definido No se pudo ejecutar (CalculateField).

No puedo averiguar de dónde viene el nombre 'Fron000000F1' para intentar rastrear este problema. Probé la expresión en arcmap usando la calculadora de campo sin problemas. ¿Qué está mal? El código está abajo:

import arcpy, os, csv arcpy.env.overwriteOutput = True out_fc_pm = r'C:  temp  temp.gdb  SignDetect__SOL680_DD_with_PM 'def calc_id (pm, pict_fld): import re pm_patt = re.compile ('  d * . *  d * ') pm_match = re.findall (pm_patt, pm [5:]) [0] pm = pm_match.replace ('. ', ") pm_final = pm.zfill (6) dir_patt = re.compile (' [AZ]  d * ') dir_match = re.findall (dir_patt, pict_fld) [0] id = pict_fld [: 5] + pm_final + dir_match if id [-1:]. Isdigit (): return id else: return id + '1' arcpy.AddField_management (out_fc_pm, 'OSMI_ID', 'TEXT') arcpy.CalculateField_management (out_fc_pm, 'OSMI_ID', calc_id ('! POSTMILE!', '! Front!'), 'PYTHON_9.3')

Cuando se usa la Calculadora de campo en ArcPy, se debe definir el bloque de código dentro laarcpy.CalculateField_managementfunción.

Sintaxis:

CalculateField_management (in_table, field, expression, {expression_type}, {code_block})

Entonces,

arcpy.CalculateField_management (out_fc_pm, 'OSMI_ID', "calc_id ('! POSTMILE!', '! Front!')", 'PYTHON_9.3', [yourcodeblock])

donde [yourcodeblock] va todo en una línea, y no quiero correr el riesgo de copiarlo erróneamente. Según esta respuesta, debería poder obtener la sintaxis correcta para su script usando:

ejecute la herramienta Calcular campo una vez de forma interactiva utilizando el Bloque de código y expresión ... y luego Copiar como fragmento de Python en el Geoprocesamiento | Resultados ventana


Nota al margen: una expresión compleja parece adecuada para UpdateCursor en lugar de Field Calculator. (Sin duda, sería más fácil de leer en su código).


Ver el vídeo: Python sys 05 Exit Codes