I am generating new raster files from vector layers on a project. I would like to save them in the same directory as the project or layer files.

How do I find this path using PyQGIS?


For python console:

QgsProject.instance().readPath("./") # also try "../"

Or with


you find something like


For python plugin (not tested!):

from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
| improve this answer | |

To access a vector file path, on a active layer, this code works well in Python Console:

>>>import os
>>>myfilepath= iface.activeLayer().dataProvider().dataSourceUri()
>>>(myDirectory,nameFile) = os.path.split(myfilepath)

It was tested with my 'tiznados_canoa.tif' raster as a active layer.

| improve this answer | |
  • 3
    Be aware in case of vector layer the path after file name contains also pipe and layer id (C:/shapes/test.shp|layerid=0). I use path = path [:path.rfind('|')] to remove it. – Miro Nov 9 '16 at 5:24

If you want to access a vector file path, on a active layer, this seems to work:

myfilepath= os.path.dirname( unicode( qgis.utils.iface.activeLayer().dataProvider().dataSourceUri() ) ) ;
fic = myfilepath + "[% "FILE" %]"

then to open a picture or text located in same directory as mylayer:

from PyQt4 import QtWebKit, QtCore ; vue=QtWebKit.QWebView() vue.setUrl( QtCore.QUrl( fic ) ) ; vue.show()
| improve this answer | |
  • Useful answer but what about the file name? You use "[% "FILE" %]" but I don't understand what does it means... – G M Aug 19 '13 at 20:59

I did test this on QGIS 3.4

will return the entire path to the file


| improve this answer | |

In QGIS 2.x and 3.x:

Project path:

QgsProject.instance().fileName()  # C:/test/sample_project.qgs

Project folder path:

QgsProject.instance().homePath() # C:/test

In QGIS 3.2+:

Project path:

# OR
QgsProject.instance().absoluteFilePath() # C:/test/sample_project.qgz 

Project folder path:

# OR
QgsProject.instance().absolutePath()   # C:/test
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.