Recuperar ruta y nombre de archivo del proyecto QGIS actual en Python [cerrado]

8

¿Hay alguna manera de obtener la ruta y el nombre del archivo del proyecto QGIS actual de un script de Python? Actualmente estoy tratando de desarrollar un complemento de Python para QGIS y necesito crear un archivo con un nombre similar en la misma carpeta.

Dominik Froehlich
fuente

Respuestas:

17

Puede usar el siguiente método de la clase QgsProject para recuperar la ruta al archivo del proyecto:

from qgis.core import *
prjpath = QgsProject.instance().fileName()

Si no hay un proyecto cargado, o el proyecto actual aún no se ha guardado, esto devolverá un QString vacío:

PyQt4.QtCore.QString(u'')

Puede convertir la ruta del archivo del proyecto a una cadena Python Unicode (si es necesario) con:

unicode(prjpath)

Sin embargo, si tiene la intención de que su complemento sea multiplataforma, es mejor que no trabaje con la ruta del archivo como una cadena en Python, sino que aproveche la excelente clase QFileInfo de Qt :

from PyQt4.QtCore import *
from qgis.core import *

prjfi = QFileInfo(QgsProject.instance().fileName())
prjfi.absolutePath()  # what you are probably looking for

La clase QFileInfo (junto con QFile y QDir ) manejará muchos problemas del sistema de archivos multiplataforma para usted e incluirá métodos que de otro modo se distribuirían en más clases de Python.

dakcarto
fuente
1
también puede usar QgsProject.instance().homePath()para obtener el camino directamente
Denis Rouzaud