Tengo cientos de shapefiles que he añadido a un proyecto QGIS. Estoy usando QGIS 3.0.0. He creado un nuevo campo de texto para cada uno de ellos llamado 'Enumertr' en PyQGIS y necesito rellenar este campo en cada uno de los shapefiles con el nombre de la capa respectiva. Tengo el siguiente script, pero me da error. También necesito adaptarlo para iterar a través de todas las capas en mi proyecto QGIS. Soy relativamente nuevo en Python, pero espero que el uso de PyQGIS me ahorre una cantidad sustancial de tiempo si puedo finalizar este script.
from PyQt4.QtCore import QVariant
from qgis.core import QgsField, QgsExpression, QgsFeature
vl = iface.activeLayer()
vl.startEditing()
idx = vl.lookupField(‘Enumertr’)
e = QgsExpression (‘vl.name’)
e.prepare(vl.fields())
for f in vl.getFeatures():
f[idx] = e.evaluate( f )
vl.updateFeature( f )
vl.commitChanges()