Skip to main content
 首页 » 编程设计

Python 跳过我的 for 循环

2025年05月04日14bonelee

首先请注意,我是 Python 的初学者。参加当前在 ArcGIS 环境中处理 Python 的类(class)。我当前的项目是一个创建文件并将其他文件复制到其中的简单程序。然而,作业的一部分是让打印语句说明正在发生的事情,例如最终的打印语句应该如下所示:

正在处理多边形要素类....

处理要素类 >> 建筑物

字段信息:

 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 

出现的问题是它打印了第一个打印语句“Processing Point FeatureClasses”,但不执行其余部分,然后跳到我的代码的下一部分并执行它。知道为什么吗?抱歉,如果我的格式或措辞不正确/听起来很奇怪。谢谢。

编辑

我也给我的教授发了邮件寻求一些指导,他回信了我上面代码块的一个稍微编辑过的版本。我现在可以打印除点场打印语句之外的所有内容,这些语句现在被跳过了。这是代码:

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 

请您参考如下方法:

您忘记将点传递给 ListFields()

pointfield = arcpy.ListFields(pl) 
for pf in pointfield: 
      print "Field Name:" + pf.name