Estou gerando novos arquivos de varredura a partir de camadas de vetor em um projeto. Gostaria de salvá-los no mesmo diretório que os arquivos do projeto ou da camada.
Como encontro esse caminho usando o PyQGIS?
Para console python:
QgsProject.instance().readPath("./") # also try "../"
Ou com
dir(QgsProject.instance())
você encontra algo como
fileName()
Para o plugin python (não testado!):
from PyQt4.QtGui import QMessageBox
from qgis.core import QgsProject
path_absolute = QgsProject.instance().readPath("./")
QMessageBox.information(None, "Title", "AP: " + unicode(path_absolute))
Para acessar um caminho de arquivo vetorial, em uma camada ativa, esse código funciona bem no 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'
Foi testado com a minha varredura 'tiznados_canoa.tif' como uma camada ativa.
Se você deseja acessar um caminho de arquivo vetorial, em uma camada ativa, isso parece funcionar:
em seguida, para abrir uma imagem ou texto localizado no mesmo diretório que o mylayer:
fonte
Eu testei isso no QGIS 3.4
QgsProject.instance().fileName()
retornará o caminho inteiro para o arquivo
'C: /MyDirectory/18809_US66.qgz'
fonte