Guys and gals could you please provide me with a sample code as to how to rename a field name in a Feature Layer or Table. I've been trying to use the FieldInfo object to do so over the last couple of days but it's not happening for me.
What this example code does is to add two NEW fields ("NAME_CITY"; "NAME_REGION") into your fieldinfo with desired new field names instead of just renaming the ORIGINAL field ("NAME_1"; "RegionNames").
After you renamed your fields you need to copy your table view/feature layer into a new table/feature class and that will be your output with renamed fields in it.
import arcpy import os from arcpy import env env.overwriteOutput = True inputFeatureClass=r"C:/Desktop/Cities/Cities.gdb/USA_Cities" #get fields from your input feature class fields= arcpy.ListFields(inputFeatureClass) # Create a fieldinfo objects fieldinfo = arcpy.FieldInfo() # Iterate through the fields and set them to fieldinfo for field in fields: if field.name == "NAME_1": fieldinfo.addField(field.name, "NAME_CITY", "VISIBLE", "") elif field.name == "RegionNames": fieldinfo.addField(field.name, "NAME_REGION", "VISIBLE", "") # The created table view will have fields as set in fieldinfo objects arcpy.MakeTableView_management(inputFeatureClass, "temp_Table_View", "", "", fieldinfo) # Write the table view to a new table arcpy.CopyRows_management("temp_Table_View", "C:/Desktop/Cities/Cities.gdb/City_Table")
Sorry for the delay. I just modified the python script and it is now using the "setNewName" method to rename a existing field instead of adding a new field.
# Import system modules import arcpy import os from arcpy import env env.overwriteOutput = True inputFeatureClass=r"C:/Desktop/Cities/Cities.gdb/USA_Cities" layer = "temp_layer" arcpy.MakeFeatureLayer_management(inputFeatureClass, layer) desc = arcpy.Describe(layer) # If a feature layer, continue if desc.dataType == "FeatureLayer": fieldInfo = desc.fieldInfo index = 0 # Use the count property to iterate through all the fields while index < fieldInfo.count: if fieldInfo.getFieldName(index)=="NAME_1": fieldInfo.setNewName(index, "NAME_CITY") elif fieldInfo.getFieldName(index)=="RegionNames": fieldInfo.setNewName(index, "NAME_REGION") index += 1 arcpy.MakeFeatureLayer_management("temp_layer","cities_lyr", "", "", fieldInfo) arcpy.CopyFeatures_management("cities_lyr", "C:/Desktop/Cities/Cities.gdb/City_Renamed")
I think this is what you are looking for.
Please let me know if you have any questions regarding the code above.