In arcpy, use the
positionAlongLine() function with a distance of
use_percentage=True. See the documentation at:
You would need to use an
arcpy.da.SearchCursor() for the line feature class, then for each line feature's geometry, run:
pointGeom = lineGeom.positionAlongLine(50, True)
Then convert the point geometry to a point feature and use an arcpy.da.InsertCursor()` to add it to your point feature class.
NB: The point you get returned will NOT be one of the vertices. It will genuinely be the half-way point along the line in terms of distance between the start and end points.