Cosa devo fare:
- rinominare un nome campo di una tabella / classe di funzionalità
- copia tutti i valori nel nuovo campo
Finora ho fatto il seguente codice come suggerisce @ 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)
Come posso mappare field.type
al AddField_management
tipo di campo del metodo? E mentre il campo si trova in una posizione intermedia, il campo viene eliminato dalla metà e aggiunto all'ultimo. Non sembra che il nome del campo sia stato rinominato.
Esiste una soluzione migliore che mi aiuti a fare queste cose?
old_field
un nome variabile o il nome effettivo del vecchio campo? Se si tratta di un nome di variabile, è necessario utilizzare la formattazione della stringa o la concatenazione per racchiudere il valore della variabile tra parentesi (parser VB) o punti esclamativi (parser Python).