Geographic Information Systems Asked by fccoelho on January 19, 2021
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
dir(QgsProject.instance())
you find something like
fileName()
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))
Correct answer by qräbnö on January 19, 2021
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()
Answered by rha on January 19, 2021
To access a vector file path, on a active layer, this code works well in Python Console:
>>>import os
>>>myfilepath= iface.activeLayer().dataProvider().dataSourceUri()
>>>myfilepath
u'/home/zeito/tiznados_canoa.tif'
>>>(myDirectory,nameFile) = os.path.split(myfilepath)
>>>myDirectory
u'/home/zeito'
>>>nameFile
u'tiznados_canoa.tif'
It was tested with my 'tiznados_canoa.tif' raster as a active layer.
Answered by xunilk on January 19, 2021
I did test this on QGIS 3.4
QgsProject.instance().fileName()
will return the entire path to the file
'C:/MyDirectory/18809_US66.qgz'
Answered by Cary H on January 19, 2021
In QGIS 2.x, 3.0 and 3.1:
Project path:
QgsProject.instance().fileName() # C:/test/sample_project.qgs
Project folder path:
QgsProject.instance().homePath() # C:/test
In QGIS 3.2+:
Project path:
QgsProject.instance().fileName()
# OR
QgsProject.instance().absoluteFilePath() # C:/test/sample_project.qgz
Project folder path:
QgsProject.instance().homePath()
# OR
QgsProject.instance().absolutePath() # C:/test
Answered by Kadir Şahbaz on January 19, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP