Remember i am using Python Version 3.6.2 QGIS Version 3.2
while running my code i am getting this error:
fields = selectedLayer.pendingFields()
AttributeError: 'QgsRasterLayer' object has no attribute 'pendingFields
if i am using fields() instead of pendingFields() because of qgis version 3x
getting this error:
fields = selectedLayer.fields()
AttributeError: 'QgsRasterLayer' object has no attribute 'fields
i am new in this field so please tell me properly what should i do
here is my code:
filename = self.dlg.lineEdit.text()
output_file = open(filename, 'w')
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
fields = selectedLayer.pendingFields()
fieldnames = [field.name() for field in fields]
for f in selectedLayer.getFeatures():
line = ','.join(unicode(f[x]) for x in fieldnames) + '\n'
unicode_line = line.encode('utf-8')
output_file.write(unicode_line)
output_file.close()
Best Answer
Your code will not work with raster layers as they have neither fields (QGIS doesn't support raster attribute tables - link) nor features.
fields
(pendingFields
in 2x) andgetFeatures
are methods of theQgsVectorLayer
class.So test if your layer has a
fields
method (i.eif hasattr(selectedLayer, 'fields'): etc...
and ignore it if it doesn't. i.e