Necesito utilizar CalculateField_management en un script de Python, y la expresión calc necesita concatenar una variable de tiempo de ejecución, una cadena y un valor de campo (cadena). He buscado por todas partes ejemplos de los que aprender. He intentado muchas cosas que he encontrado en mi investigación y algunas de mis propias ideas, también, pero no puedo conseguir la expresión calc para evaluar. Ahora estoy completamente confundido y necesito un poco de ayuda para salir de este agujero. Así que, aquí está la primicia.
El campo a calcular, DESCRIP, es un campo de cadena en una clase de característica fGDB con una característica. La variable de tiempo de ejecución, enddesg será una cadena. Básicamente, lo que quiero hacer es concatenar el valor de tiempo de ejecución con una cadena (larga) y añadirla al valor existente en el campo DESCRIP, almacenando el resultado de nuevo en el campo DESCRIP. He probado muchas formas de una cadena "todo en uno" para la expresión, pero nada funcionó. Llegué a la conclusión de que un enfoque pre-lógica sería mejor, pero no he sido capaz de conseguir que funcione tampoco. A continuación es lo que tengo en este momento.
expr = "getDescription(str(enddesg))"
codeblock = """def getDescription(endstr):
exprstr = endstr + ' Touchdown Zone Elevation;duplicated from existing control point;' + !DESCRIP!
return exprstr"""
arcpy.CalculateField_management(perpptsSX_src, "DESCRIP", expr, 'PYTHON_9.3', codeblock) #Should be only one feature in the source
(Por cierto, el enddesg es una cadena o un entero, pero se convierte a una cadena como entrada). Obtengo el siguiente error
<class 'arcgisscripting.ExecuteError'>: Failed to execute. Parameters are not valid.
ERROR 000989: Python syntax error: Parsing error <type 'exceptions.SyntaxError'>: invalid syntax (line 2)
Failed to execute (CalculateField).
La siguiente variación de código no produce errores, pero tampoco consigo introducir nada en el campo DESCRIP.
expr = "getDescription(str(enddesg), !DESCRIP!)"
codeblock = """def getDescription(endstr, desc):
exprstr = endstr + ' Touchdown Zone Elevation;duplicated from existing control point;' + desc
return exprstr"""
Ahora estoy completamente confundido.