遍历当前工程中所有地图图层
自动找出它们的数据源 GDB(去重)
依次开启编辑会话并保存
import arcpy
# 获取当前工程
aprx = arcpy.mp.ArcGISProject("CURRENT")
# 存储所有唯一的 GDB 路径
gdb_paths = set()
# 遍历所有地图和图层
for m in aprx.listMaps():
for lyr in m.listLayers():
if lyr.isFeatureLayer:
try:
desc = arcpy.Describe(lyr.dataSource)
if hasattr(desc, "path") and desc.path.lower().endswith(".gdb"):
gdb_paths.add(desc.path)
except:
pass
if not gdb_paths:
print("未找到任何 GDB 数据源,无法保存编辑。")
else:
print(f"检测到 {len(gdb_paths)} 个 GDB:")
for gdb in gdb_paths:
print(f"- {gdb}")
try:
# 开启编辑会话
edit = arcpy.da.Editor(gdb)
# 假设都是文件 GDB(非版本化),两个参数都 False
edit.startEditing(False, False)
edit.startOperation()
# 不做修改,只为保存已有编辑
edit.stopOperation()
# 保存并结束
edit.stopEditing(True)
print(f"✅ 已保存 {gdb} 的所有编辑")
except Exception as e:
print(f"❌ 保存 {gdb} 失败: {e}")
print("所有工作空间的编辑保存完成。")