I had a similar problem. I had a style file and I could not use it with python. To make Legend appear you need to include a empty legend on the mxd. Therefore, no legend items comes up.
To apply style, I could not find any tool but I used ApplySymbologyFromLayer. What you need to do is you need to arrange your sembology layer as you want and then you need to indicate label expression (Field name that your sembology need to use) the line below (lyr1.labelClasses[0].expression = LabelExpression)
Here a script that I used to make a tool. After getting label name as text you need to get it to be brackets []
import arcpy,os
symbologyLayer=arcpy.GetParameterAsText(2)
LabelExpression=arcpy.GetParameterAsText(1)
try:
for idx, item in enumerate(LabelExpression.split()):
if 'VISIBLE'==item:
num=idx
arcpy.AddWarning(LabelExpression.split()[idx-1])
LabelExpression="["+LabelExpression.split()[num-1]+"]"
except:
arcpy.AddError("Choose only one field name for label expession")
K_shp=arcpy.GetParameterAsText(0)
add_legend= arcpy.GetParameterAsText(3)
LayerName=os.path.split(K_shp)[1][:-4]+"_lyr"
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
arcpy.MakeFeatureLayer_management(K_shp,LayerName)
lyr1= arcpy.mapping.Layer(LayerName)
arcpy.ApplySymbologyFromLayer_management (lyr1, symbologyLayer)
lyr1.labelClasses[0].expression = LabelExpression
lyr1.showLabels = True
arcpy.RefreshActiveView()
arcpy.mapping.AddLayer(df, lyr1, "BOTTOM")
if add_legend=='true':
#styleItem = arcpy.mapping.ListStyleItems("USER_STYLE", "Legend Items", "NewDefaultLegendStyle")[0]
legend = arcpy.mapping.ListLayoutElements(mxd, "LEGEND_ELEMENT", "Legend")[0]
#legend.updateItem(lyr1, styleItem)
legend.autoAdd = True
del mxd