You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Python批量导出QGIS指定图层组内的所有图层为CSV文件

解决方案

以下是可直接运行的完整代码:

# 定义CSV导出保存路径,注意路径末尾需保留斜杠
pathToFile = "C:/Users/xxxx/Documents/test/"
# 获取当前项目的图层树根节点
root = QgsProject.instance().layerTreeRoot()
# 定位到test1分组
mygroup = root.findGroup("test1") 

# 遍历分组内所有图层
for tree_layer in mygroup.findLayers():
    # 获取图层实例对象
    vLayer = tree_layer.layer()
    # 可选判断:仅导出矢量图层,过滤栅格图层避免导出报错
    if isinstance(vLayer, QgsVectorLayer):
        # 执行CSV导出
        QgsVectorFileWriter.writeAsVectorFormat(
            vLayer, 
            pathToFile + vLayer.name() + ".csv", 
            "utf-8", 
            vLayer.crs(), 
            driverName="CSV"
        )

代码说明

  • 你原有第二段代码最后一行把图层转成名字列表的操作是多余的,导出方法需要传入图层实例而非字符串名称,直接调用findLayers()获取图层树节点后取对应图层实例即可
  • 如果你确认test1分组下全是矢量图层,可以删除矢量类型判断的代码行
  • 如果你使用QGIS 3.20及以上版本,更推荐使用新版本导出方法替换原有旧方法,替换部分示例如下:
# QGIS 3.20+ 版本导出替换代码
save_options = QgsVectorFileWriter.SaveVectorOptions()
save_options.driverName = "CSV"
save_options.fileEncoding = "utf-8"
QgsVectorFileWriter.writeAsVectorFormatV3(
    vLayer,
    pathToFile + vLayer.name() + ".csv",
    QgsCoordinateTransformContext(),
    save_options
)

内容的提问来源于stack exchange,提问作者Aham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 08:24:02