Lo que necesito hacer:
- cambiar el nombre de un campo de una tabla / clase de entidad
- copiar todos los valores al nuevo campo
Hasta ahora he hecho el siguiente código como @ artwork21 sugiere:
import sys
import traceback
import arcpy
from arcpy import env
## ARGUMENTS
# argv[1] = input table/feature class path
# argv[2] = input old field name
# argv[3] = input new field name
path = sys.argv[1]
oldFieldName = sys.argv[2]
newFieldName = sys.argv[3]
env.overwriteOutput = True
fields = arcpy.ListFields(path)
for field in fields:
if field.aliasName == oldFieldName:
if not oldFieldName == newFieldName:
fieldType = field.type
# Add new field
arcpy.AddField_management(path, newFieldName, fieldType)
#Calculates the new field based on old field values
arcpy.CalculateField_management(path, newFieldName, "!"+oldFieldName+"!", "PYTHON", "")
# Delete the old field (if necessary)
arcpy.DeleteField_management(path, oldFieldName)
¿Cómo puedo asignar field.type
al AddField_management
tipo de campo del método? Y mientras el campo está en un lugar intermedio, el campo se elimina del medio y se agrega al último. Eso no parece que se cambie el nombre del campo.
¿Hay alguna solución mejor que me ayude a hacer estas cosas?
old_field
un nombre de variable o el nombre real del campo anterior? Si se trata de un nombre de variable, debe utilizar el formato de cadena o la concatenación para ajustar el valor de la variable con los corchetes (analizador VB) o los signos de exclamación (analizador Python).