Is there a way to select edges marked as sharp via python? There is an operator to select sharp edges, and an operator to select edges marked as sharp if you have already an edge marked as sharp selected, but is there a way to select edges marked as sharp when you have nothing selected?

Maybe add a temporary edge, mark it as sharp, select similar, delete temporary edge? I don't know how to do that though.

I can see that bmesh.types.BMEdge has a seam attribute, but no sharp(?). So I guess it's not possible to loop through edges selecting the ones marked as sharp...
There isn't a single command for this, but a script to do this is quite simple:

Note that with BMesh, the same smooth option is used for faces and edges (not smooth == sharp).

import bpy
import bmesh

obj = bpy.context.edit_object
me = obj.data

bm = bmesh.from_edit_mesh(me)
for e in bm.edges:
    if not e.smooth:
        e.select = True

bmesh.update_edit_mesh(me, False)