I ended doing something like this. Maybe a special dictionary would be a better way to go?def Rename_Field(fc_path, field_name):
field_name_orig = field_name + "_orig"
gp.addmessage("Renaming field: " + field_name + " to " + field_name + "_orig")
print "Renaming field: " + field_name + " to " + field_name_orig
field_list = gp.ListFields(fc_path, field_name)
field = field_list.next()
type = str(field.Type)
length = str(field.Length)
# Case handling; Returned type of "String" uses the a type of "text" and also uses length as an AddField parameter.
if (type == "String"):
type = "TEXT"
gp.AddField_management(fc_path, field_name_orig, type, "", "", length, "", "NULLABLE", "NON_REQUIRED", "")
gp.CalculateField(fc_path,field_name_orig, "[" + field_name + "]")
gp.DeleteField_management(fc_path, field_name)
else :
# Case handling; Returned type of "Integer" converted to a type of "long" for use as AddField parameter.
if (type == "Integer"):
type = "LONG"
gp.AddField_management(fc_path, field_name_orig, type, "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
gp.CalculateField(fc_path,field_name_orig, "[" + field_name + "]")
gp.DeleteField_management(fc_path, field_name)
# Case handling; Returned type of "SmallInteger" converted to a type of "short" for use as AddField parameter.
elif (type == "SmallInteger"):
type = "SHORT"
gp.AddField_management(fc_path, field_name_orig, type, "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
gp.CalculateField(fc_path,field_name_orig, "[" + field_name + "]")
gp.DeleteField_management(fc_path, field_name)
# Case handling; Returned type other than "String", "Integer", or "SmallInteger" handled normally.
else :
gp.AddField_management(fc_path, field_name_orig, type, "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
gp.CalculateField(fc_path,field_name_orig, "[" + field_name + "]")
gp.DeleteField_management(fc_path, field_name)
# Reset variables
name = ""
type = ""
length = ""
fc_path = ""
field_name = ""
Joel