如何使用工具箱脚本的列表字段函数?

2024-06-28 19:13:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图为工具箱编写一个简单的脚本,类似于Addfield_datamanagement工具箱。该脚本将一个新字段添加到要素类或带有属性表的shapefile的表中。 到现在为止,一直都还不错。在

# Import system modules
import arcpy
#Workspace
arcpy.env.workspace="C:\\Users\\xxx.gdb"
# Set feature class
inputFC = arcpy.GetParameterAsText(0)
# Get List of Fieldnames
inputString =arcpy.GetParameterAsText(1)
inputString =arcpy.ValidateFieldName(inputString,arcpy.env.workspace)
fieldList =inputString.split(";")
fieldType = arcpy.GetParameterAsText(2)
for fieldName in fieldList:
          arcpy.AddField_management(inputFC , fieldName, fieldType)
arcpy.AddMessage("Field generated:" + fieldName)
arcpy.AddMessage ("Script executed")

所以这似乎是可行的,但是现在我想先检查一下fieldname是否已经存在,然后再打印现有的名称! 我考虑了列表字段和内置的len()函数:

^{pr2}$

不知道ListFields命令的语法以及如何在上面的代码中集成它!所以,任何帮助都是欢迎和感谢!在


Tags: env脚本工具箱workspacefieldname要素arcpyfieldlist
1条回答
网友
1楼 · 发布于 2024-06-28 19:13:35

ListFields返回字段对象的list,这些对象中的每个对象都有与之关联的attributes。在

结构如下:

field_list = [field object1: field.name, field.type, etc...;
              field object2: field.name, field.type, etc...;
             ]

您可能需要访问每个field对象的.name属性,以确定它是否匹配变量fieldList中的任何名称。在

首先,生成字段名列表:

^{pr2}$

接下来,将现有字段列表与用户要添加的字段列表进行比较:

duplicateFields = set(existingFields) & set(fieldList)

if len(duplicateFields) == 0:
    carry on with adding fields
else:
    arcpy.AddMessage('Field(s) already exist: ' + duplicateFields)

相关问题 更多 >