Pfad und Dateinamen des aktuellen QGIS-Projekts in Python abrufen [geschlossen]

8

Gibt es eine Möglichkeit, den Pfad und den Dateinamen des aktuellen QGIS-Projekts aus einem Python-Skript abzurufen? Ich versuche derzeit, ein Python-Plugin für QGIS zu entwickeln, und ich muss eine Datei mit einem ähnlichen Namen im selben Ordner erstellen.

Dominik Froehlich
quelle

Antworten:

17

Sie können die folgende Methode aus der QgsProject-Klasse verwenden , um den Pfad zur Projektdatei abzurufen:

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

Wenn kein Projekt geladen ist oder das aktuelle Projekt noch nicht gespeichert wurde, wird ein leerer QString zurückgegeben:

PyQt4.QtCore.QString(u'')

Sie können den Pfad der Projektdatei weiter in eine Python-Unicode-Zeichenfolge (falls erforderlich) konvertieren mit:

unicode(prjpath)

Wenn Sie jedoch möchten, dass Ihr Plugin plattformübergreifend ist, sollten Sie in Python nicht mit dem Dateipfad als Zeichenfolge arbeiten, sondern die hervorragende QFileInfo-Klasse von Qt nutzen :

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

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

Die QFileInfo-Klasse (zusammen mit QFile und QDir ) behandelt viele plattformübergreifende Dateisystemprobleme für Sie und bietet auch Methoden, die ansonsten auf mehrere Python-Klassen verteilt wären.

Dakcarto
quelle
1
Sie können auch verwenden QgsProject.instance().homePath(), um den Pfad direkt zu erhalten
Denis Rouzaud