Luke, or anyone else...
I too am learning to append and user fieldmap, flieldmappings to get my fields squared away.
basically I'm appending data into a "shell" featureclass that is empty. There's only a few fields I'm appending and trying to match.
I'm able to add ONE field change with this script:
(append and target layers are defined earlier in the script as well as importing the arpy library
append_layer = outputclip
target_layer = out_name
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(target_layer)
fieldmappings.addTable(append_layer)
field_to_map_index = fieldmappings.findFieldMapIndex("PropertyAddress")
field_to_map = fieldmappings.getFieldMap(field_to_map_index)
field_to_map.addInputField(append_layer, "Addy_Concat")
fieldmappings.replaceFieldMap(field_to_map_index, field_to_map)
arcpy.Append_management(append_layer, target_layer, "NO_TEST", fieldmappings, "1")
So, this works for me. I end up appending the "Addy_Concat" field into the "PropertyAddress" field. Great.
But I have 3 other fields to do this with. So I used this:
append_layer = outputclip
target_layer = out_name
fieldmappings = arcpy.FieldMappings()
fieldmappings.addTable(target_layer)
fieldmappings.addTable(append_layer)
list_of_fields_we_will_map = []
list_of_fields_we_will_map.append(('Addy_Concat', 'PropertyAddress'))
print(*list_of_fields_we_will_map, sep = ", ")
for field_map in list_of_fields_we_will_map:
field_to_map_index = fieldmappings.findFieldMapIndex(field_map[0])
field_to_map = fieldmappings.getFieldMap(field_to_map_index)
field_to_map.addInputField(append_layer, field_map[1])
fieldmappings.replaceFieldMap(field_to_map_index, field_to_map)
inData = [append_layer]
arcpy.Append_management(inData, target_layer, "NO_TEST", fieldmappings, "1")
I keep on getting this error:
Traceback (most recent call last):
File "<string>", line 119, in <module>
File "c:\program files\arcgis\pro\Resources\arcpy\arcpy\arcobjects\arcobjects.py", line 666, in addInputField
return convertArcObjectToPythonObject(self._arc_object.AddInputField(*gp_fixargs(args)))
RuntimeError: FieldMap: Error in adding input field to field map
Specifically, it's this line (119) that's causing issues:
field_to_map.addInputField(append_layer, field_map[1])
If you noticed, I remarked out my multi fields to let the list just take the one field match combo that worked in the simpler, non-list script.
Still throws this error.
I'm confused how this list loops works. Not sure how it's figuring out position 0,1 with the case like
('Addy_Concat', 'PropertyAddress')
Any ideas what I'm doing wrong here? Or what I can do to try accomplish what I want to do?