Ce que je dois faire:
- renommer un nom de champ d'une table / classe d'entités
- copier toutes les valeurs dans le nouveau champ
Jusqu'à présent, j'ai fait le code suivant comme le suggère @ 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)
Comment mapper field.type
au AddField_management
type de champ de la méthode? Et tandis que le champ est au milieu, le champ est supprimé du milieu et ajouté au dernier. Cela ne ressemble pas à un nom de champ renommé.
Y a-t-il une meilleure solution qui m'aide à faire ces choses?
old_field
un nom de variable ou le nom réel de l'ancien champ? S'il s'agit d'un nom de variable, vous devez utiliser le formatage de chaîne ou la concaténation pour encapsuler la valeur de la variable avec les crochets (analyseur VB) ou les points d'exclamation (analyseur Python).