批量删除GIS数据库空层。
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
# -*- coding: utf-8 -*- # --------------------------------------------------------------------------- # Merge.py # Created on: 2013-01-21 10:25:22.00000 # (generated by WangLin_TJCH) # Description: # --------------------------------------------------------------------------- # Import arcpy module import arcpy import os.path import time import random from arcpy import env FCDBDir = "D:\\aaa" dicAllFC={} fcall=[] GDBAllPath=[] if not isinstance(FCDBDir,unicode): FCDBDir = FCDBDir.decode('utf-8') #Get Dataset and FeatureClass,Store in dicAllFC,Key =fc value= ds if os.path.exists(FCDBDir): for dirpath,dirnames,filenames in os.walk(FCDBDir): # 遍历GDB文件夹 获取GDB for dirname in dirnames: if ".gdb" in dirname: gdbfilepath = os.path.join(dirpath,dirname) if not gdbfilepath in GDBAllPath: GDBAllPath.append(gdbfilepath) # 遍历MDB文件夹 获取MDB for filename in filenames: if os.path.splitext(filename)[1]=='.mdb': mdbfilepath = os.path.join(dirpath,filename) if not mdbfilepath in GDBAllPath: GDBAllPath.append(mdbfilepath) # 遍历Shp文件夹 获取Shape for filename in filenames: if os.path.splitext(filename)[1]=='.shp': shpfilepath = os.path.join(dirpath,filename) if not dirpath in GDBAllPath: GDBAllPath.append(dirpath) for everyfilepath in GDBAllPath: env.workspace = everyfilepath singlefclist = arcpy.ListFeatureClasses("","All") if singlefclist and len(singlefclist)>0: for singlefc in singlefclist: # 如果singlefc是unicode则不做改变,否则将utf-8的singlefc编码解码成unicode if not isinstance(singlefc,unicode): singlefc = singlefc.decode('utf-8') if isinstance(everyfilepath,unicode): fcfullpath = everyfilepath+"\\"+singlefc else: fcfullpath = everyfilepath+"\\"+singlefc.encode('gb2312') rows = arcpy.SearchCursor(fcfullpath, "", "", "","") count = 0 for featurecount in rows: count=count+1 if count ==0: arcpy.Delete_management(fcfullpath) print "Delete "+fcfullpath+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime()) datasetlist = arcpy.ListDatasets("","Feature") for dataset in datasetlist: # 如果dataset是unicode则不做改变,否则将utf-8的dataset编码解码成unicode if isinstance(dataset,unicode): dataset = dataset else: dataset = dataset.decode('utf-8') if isinstance(everyfilepath,unicode): env.workspace = everyfilepath+"\\"+dataset dspath = everyfilepath+"\\"+dataset else: env.workspace = everyfilepath+"\\"+dataset.encode('gb2312') dspath = everyfilepath+"\\"+dataset.encode('gb2312') fclist = arcpy.ListFeatureClasses("") if fclist and len(fclist)>0: for fc in fclist: # 如果fc是unicode则不做改变,否则将utf-8的fc编码解码成unicode if isinstance(fc,unicode): fc = fc else: fc = fc.decode('utf-8') if isinstance(dspath,unicode): fcFullPath = dspath+"\\"+fc else: fcFullPath = dspath+"\\"+fc.encode('gb2312') randomviewname = fc+"view"+str(random.randint(1,100000)) arcpy.MakeTableView_management(fc,randomviewname) count =0 count = int(arcpy.GetCount_management(randomviewname).getOutput(0)) if count ==0: arcpy.Delete_management(fcFullPath) print "Delete "+fcFullPath+" Succeed At"+time.strftime("%Y-%m-%d %X",time.localtime()) else: print "Dir Not Exist" print "Done"