最近在做数据时需要对整个过程数据进行保留,以防后续会有修改。数据有很多个layer,且涉及到很多关于code的字段,最开始是直接用编辑工具打开属性表一个表一个表替换,因为数量太多,有出现改漏了情况。就想着还是学习看看用脚本解决。保存脚本文件为.py (跟新建工具箱目录一致)
# -*- coding: utf-8 -*-
import arcpy, math, os
import sys
import re
reload(sys)
sys.setdefaultencoding('utf-8')
OldstationCode = arcpy.GetParameterAsText(0)#参数1:需要更改的字符串
NewstationCode = arcpy.GetParameterAsText(1)#参数2:更改后的字符串
mxd = arcpy.mapping.MapDocument("CURRENT")#获取当前MXD
lys = arcpy.mapping.ListLayers(mxd)#获取当前MXD下所有layers
lists = [ ["字段1" ,"字段2","字段3"]#需要更改的字段的名称
for ly in lys:
# 确定某个图层是否为图层组:第一查看该图层是否支持 isGroupLayer 属性。第二longName 属性
# 对非图层组的图层进行处理
if ly.isGroupLayer:
continue
else:
#获取ly的字段,如果ly的某字段名称存在于list则进行修改(用的字段计算器里的replace)
flds = arcpy.ListFields(ly)
for fld in flds:
if fld.name in lists:
arcpy.CalculateField_management(ly, fld.name,"""Replace([{0}],"{1}","{2}")""".format(fld.name,OldstationCode,NewstationCode), "VB")
刚开始学习,记录细致点。
新建工具箱——添加脚本——命名——下一步然后把刚才的脚本文件添加进来——完成