Docs in progress for ‘QGIS testing’. Visit https://docs.qgis.org/2.18 for QGIS 2.18 docs and translations.

Loading Projects

Sometimes you need to load an existing project from a plugin or (more often) when developing a standalone QGIS Python application (see: Python Applications).

To load a project into the current QGIS application you need to create a QgsProject instance() object and call its read() method passing the path of the project to be loaded:

# If you are not inside a QGIS console you first need to import
# qgis and PyQt classes you will use in this script as shown below:
from qgis.core import QgsProject
# Get the project instance
project = QgsProject.instance()
# Print the current project file name (might be empty in case no projects have been loaded)
print(project.fileName())
'/home/user/projects/my_qgis_project.qgs'
# Load another project
project.read('/home/user/projects/my_other_qgis_project.qgs')
print(project.fileName())
'/home/user/projects/my_other_qgis_project.qgs'

If you need to make modifications to the project (for example to add or remove some layers) and save your changes, call the write() method of your project instance. The write() method also accepts an optional path for saving the project to a new location:

# Save the project to the same
project.write()
# ... or to a new file
project.write('/home/user/projects/my_new_qgis_project.qgs')

Both read() and write() functions return a boolean value that you can use to check if the operation was successful.

Note

If you are writing a QGIS standalone application, in order to synchronise the loaded project with the canvas you need to instantiate a QgsLayerTreeMapCanvasBridge as in the example below:

bridge = QgsLayerTreeMapCanvasBridge( \
         QgsProject.instance().layerTreeRoot(), canvas)
# Now you can safely load your project and see it in the canvas
project.read('/home/user/projects/my_other_qgis_project.qgs')