# coding=gbk
import arcpy
from arcpy import da
import os
import re
# 过滤路径非法字符串
def filename_filter(filename):
filename = re.sub(r'[\/:*?"<>|]', '', filename)
return filename
def main():
in_fc=arcpy.GetParameter(0)
in_field=arcpy.GetParameterAsText(1)
out_workspace=arcpy.GetParameterAsText(2)
# 字段唯一值列表
lst=[]
with da.SearchCursor(in_fc,[in_field]) as cursor:
for row in cursor:
lst.append(row[0])
lst = set(lst)
# 类型个数
record_count = len(lst)
arcpy.SetProgressor("step","{} feature classes will be exporting...".format(record_count).encode('gbk'),0,record_count,1)
# 数据库描述
des_workspace=arcpy.Describe(out_workspace)
# 如果工作空间是文件夹,那么输出应该是shapefile,应该有扩展名.shp
if des_workspace.workspaceType=='FileSystem':
for item in lst:
arcpy.Select_analysis(in_fc,os.path.join(out_workspace,filename_filter(item) +'.shp'),in_field+'='+"'"+item+"'")
arcpy.SetProgressorPosition()
else:
for item in lst:
arcpy.Select_analysis(in_fc,os.path.join(out_workspace,filename_filter(item)),in_field+'='+"'"+item+"'")
arcpy.SetProgressorPosition()
arcpy.AddMessage('... work done.')
if __name__ == '__main__':
main()