The [FieldInfo()][1] object seems to me to be more appropriate than the FieldMappings if you want to drop fields from your input. It allows you to modify some properties of your input fields when passing them to the output. One of these properties is visibility (if a field is not visible, it won't be passed to the output). It is used among other by the Make Feature Layer tool. I would copy your input to a feature layer with a FieldInfo specifying which fields have to be kept (visible) or not (hidden), and then use Feature Class to Feature Class without FieldMappings: def subset_attributes(origFC, fieldList, outFC): # List input fields fields= arcpy.ListFields(origFC) # Create a fieldinfo objects fieldinfo = arcpy.FieldInfo() # Iterate over input fields, add them to the FieldInfo and make them visible # if they are in the list of fields to be kept, hide them otherwise for field in fields: if field.name in fieldList: fieldinfo.addField(field.name, field.name, "VISIBLE", "") else: fieldinfo.addField(field.name, field.name, "HIDDEN", "") # Copy features to a layer using the FieldInfo arcpy.MakeFeatureLayer_management(origFC, "temp", "", "", fieldinfo) # Export the layer to a feature class arcpy.FeatureClassToFeatureClass_conversion("temp", scratchWS, outFC) This code will work even if you drop all atrributes from the input. [1]: http://resources.arcgis.com/en/help/main/10.2/index.html#//018z0000004v000000