I was having success with the following:
import arcpy
outFeature = 'D:/GIS Folder/HighwayDistricts.gdb/TEST'
features = [
'C:/Temp/HighwayDistricts.gdb/HWY1',
'C:/Temp/HighwayDistricts.gdb/HWY2',
'C:/Temp/HighwayDistricts.gdb/HWY3',
'C:/Temp/HighwayDistricts.gdb/HWY4',
'C:/Temp/HighwayDistricts.gdb/HWY5'
]
fields = [
['STREET "STREET" true true false 50 Text 0 0,First,
['ROAD_TYPE "ROAD_TYPE" true true false 70 Text 0 0,First,
['RD_Owner "RD_Owner" true true false 255 Text 0 0 ,Join,
]
fmap = ''
for fld in fields:
fm = []
for fc in features:
fm.append(fld[1].format(fc))
fmap = fmap + fld[0].format(','.join(fm))
print fmap
print
print ';'.join(features)
arcpy.Merge_management(
inputs= ';'.join(features),
output= outFeature,
field_mappings= fmap
)
The print statements output the following:
STREET "STREET" true true false 50 Text 0 0,First,#,C:/Temp/HighwayDistricts.gdb/HWY1,STREET,0,11,C:/Temp/HighwayDistricts.gdb/HWY2,STREET,0,11,C:/Temp/HighwayDistricts.gdb/HWY3,STREET,0,11,C:/Temp/HighwayDistricts.gdb/HWY4,STREET,0,11,C:/Temp/HighwayDistricts.gdb/HWY5,STREET,0,11;ROAD_TYPE "ROAD_TYPE" true true false 70 Text 0 0,First,#,C:/Temp/HighwayDistricts.gdb/HWY1,ROAD_TYPE,0,11,C:/Temp/HighwayDistricts.gdb/HWY2,ROAD_TYPE,0,11,C:/Temp/HighwayDistricts.gdb/HWY3,ROAD_TYPE,0,11,C:/Temp/HighwayDistricts.gdb/HWY4,ROAD_TYPE,0,11,C:/Temp/HighwayDistricts.gdb/HWY5,ROAD_TYPE,0,11;RD_Owner "RD_Owner" true true false 255 Text 0 0 ,Join,#,C:/Temp/HighwayDistricts.gdb/HWY1,RD_Owner,-1,-1,C:/Temp/HighwayDistricts.gdb/HWY2,RD_Owner,-1,-1,C:/Temp/HighwayDistricts.gdb/HWY3,RD_Owner,-1,-1,C:/Temp/HighwayDistricts.gdb/HWY4,RD_Owner,-1,-1,C:/Temp/HighwayDistricts.gdb/HWY5,RD_Owner,-1,-1
C:/Temp/HighwayDistricts.gdb/HWY1;C:/Temp/HighwayDistricts.gdb/HWY2;C:/Temp/HighwayDistricts.gdb/HWY3;C:/Temp/HighwayDistricts.gdb/HWY4;C:/Temp/HighwayDistricts.gdb/HWY5
My test values were slightly different than yours as I am not completely sure of your set-up. I ran this outside ArcMap, hence the path to the features. If you have a map with the layers added, you could substitute the layer names for the layer path in ArcMap's Python window.
I think the '0 ,11' and '-1,-1' in your field map indicate the start and end positions of the data being transferred. 0,11 would be the first 12 characters of the field's data, and -1,-1 would take the whole field. In my experience, if the field data being transferred is bigger than the target field size, an error will occur.
I have not tested for spaces in feature names/paths, nor have I tested where renaming the field is attempted with field mapping.
Hope this helps.