O que eu preciso fazer:
- renomear um nome de campo de uma tabela / classe de recurso
- copie todos os valores para o novo campo
Até agora, fiz o seguinte código, como sugere @ artwork21:
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)
Como posso mapear field.type
para AddField_management
o tipo de campo do método? E enquanto o campo estiver em um local intermediário, o campo será excluído do meio e adicionado ao último. Isso não parece como se o nome do campo fosse renomeado.
Existe alguma solução melhor que me ajude a fazer essas coisas?
old_field
um nome de variável ou o nome real do campo antigo? Se for um nome de variável, você precisará usar a formatação ou concatenação de seqüência de caracteres para agrupar o valor da variável entre colchetes (analisador VB) ou pontos de exclamação (analisador Python).