ฉันยังได้รับพจนานุกรมว่างเปล่าเมื่อฉันเรียกใช้รหัสของคุณ แต่การทำงานต่อไปนี้สำหรับฉันซึ่งแตกต่างกันเล็กน้อย:
from qgis.core import *
from PyQt4.QtCore import QFileInfo
from PyQt4.QtGui import QApplication
import os
from os.path import expanduser
home = expanduser("~")
QgsApplication( [], False, home + "/AppData/Local/Temp" )
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
app = QApplication([], True)
QgsApplication.initQgis()
# Get the project instance
project = QgsProject.instance()
# Open the project
project.read(QFileInfo('C:\path\to\project\project.qgs'))
print project.fileName()
# Get the layers in the project
layers = QgsMapLayerRegistry.instance().mapLayers()
print layers
QgsApplication.exitQgis()
app.exit()
ทดสอบกับ QGIS 2.18.3 สำหรับ Windows 7 64-bit
แก้ไข:
ฉันเชื่อว่าความแตกต่างที่สำคัญระหว่างรหัสของคุณกับสิ่งที่ฉันใช้คือคุณต้องสร้างวัตถุ QApplication ก่อนที่จะสร้าง QgsApplication ดังนั้นคุณจะต้องแทนที่:
qgs = QgsApplication([], False)
ด้วยสิ่งนี้:
qgs = QApplication([], False)
แต่คลาส QApplication จะต้องนำเข้าดังนั้นเราต้องเพิ่มสิ่งต่อไปนี้:
from PyQt4.QtGui import QApplication
และสุดท้ายถ้าคุณต้องการทำการล้างข้อมูลคุณต้องเพิ่มสิ่งต่อไปนี้ในตอนท้าย
QgsApplication.exitQgis()
ดังนั้นคุณสามารถลองใช้รหัสต่อไปนี้ซึ่งใกล้เคียงกับรหัสต้นฉบับของคุณมากขึ้น:
from qgis.core import *
from PyQt4.QtCore import QFileInfo
from PyQt4.QtGui import QApplication
QgsApplication.setPrefixPath("C:/OSGeo4W64/apps/qgis", True)
qgs = QApplication([], False)
QgsApplication.initQgis()
# Get the project instance
project = QgsProject.instance()
# Open the project
project.read(QFileInfo('C:/path/to/project/project.qgs'))
print project.fileName()
# Get the layers in the project
layers = QgsMapLayerRegistry.instance().mapLayers()
print layers
QgsApplication.exitQgis()
QGIS 2.18.2
ขั้นตอนการทดลองของ OP และ @ GermánCarrillo รุ่นของ OP คืออะไร