Python跳过我的for循环
首先,我想说明我在Python方面还是个新手。目前正在上一个关于在ArcGIS环境中使用Python的课程。我的项目是写一个简单的程序,用来创建文件并将其他文件复制到这些文件里。不过,作业的一部分要求在程序运行时打印出一些信息,比如最后的打印语句应该是这样的:
正在处理多边形要素类....
正在处理要素类 >> 建筑
字段信息:
etc.
这是我代码中应该实现这个功能的小部分:
pointlist = arcpy.ListFeatureClasses("*", "Point")
print "Processing Point FeatureClasses..."
for pl in pointlist:
arcpy.MakeFeatureLayer_management(pl, "Point" + 1)
pointlayer = arcpy.SelectLayerByLocation_management(pl, "intersect", MapGridID)
pointcount = int(arcpy.GetCount_management(pointlayer).getOutput(0))
if pointcount >= 1:
arcpy.CopyFeatures_management(pointlayer, OutputGDB)
for pl in pointlist:
print "Processing FeatureClass:" + pl
pointfield = arcpy.ListFields()
for pf in pointfield:
print "Field Name:" + pf
问题是,它打印出了第一个语句“正在处理点要素类”,但后面的内容却没有打印出来,然后直接跳到我代码的下一部分去执行了。你知道这是为什么吗?抱歉如果我的格式或措辞有点不对/听起来奇怪。谢谢。
编辑
我也给我的教授发了邮件,请求一些指导,他回复了我一个稍微修改过的代码版本。现在我可以打印出所有内容,除了点字段的打印语句,这些现在被跳过了。以下是代码:
pointlist = arcpy.ListFeatureClasses("*", "Point")
print "Processing Point FeatureClasses...\n"
i = 1
for pl in pointlist:
print "Processing FeatureClass: " + pl
featlayernamepoint = "Point" + str(i)
arcpy.MakeFeatureLayer_management(pl, featlayernamepoint)
arcpy.SelectLayerByLocation_management(featlayernamepoint, "intersect", featurelayerMG2)
pointcount = int(arcpy.GetCount_management(featlayernamepoint).getOutput(0))
if pointcount >= 1:
arcpy.CopyFeatures_management(featlayernamepoint, OutputGDB)
pointfield = arcpy.ListFields(featlayernamepoint)
for pf in pointfield:
print "Field Name: " + pf.name
i += 1
1 个回答
0
你忘了把点传给 ListFields() 这个函数了。
pointfield = arcpy.ListFields(pl)
for pf in pointfield:
print "Field Name:" + pf.name