Ótimo código, no entanto, isso funciona apenas para a camada selecionada e somente a imprime. Com alguma ajuda de outros posts e Joseph, eu o transformei em um código que adiciona um atributo a todas as camadas do seu projeto com o comprimento.
from PyQt4.QtCore import QVariant
for layer in QgsMapLayerRegistry.instance().mapLayers().values():
features = layer.getFeatures()
for f in features:
geom = f.geometry()
leng = geom.length()
res = layer.dataProvider().addAttributes([QgsField("Length", QVariant.Int)])
layer.updateFields()
fieldIndex = layer.dataProvider().fieldNameIndex( "Length" )
attrFeatMap = {}
attrMap = { fieldIndex : leng }
for feature in layer.getFeatures():
attrFeatMap[ feature.id() ] = attrMap
layer.dataProvider().changeAttributeValues( attrFeatMap )