首先请注意,我是Python的初学者。在ArcGIS环境中使用当前处理Python的类。我目前的项目是一个简单的程序来创建文件并将其他文件复制到它们。然而,任务的一部分是有打印语句声明是怎么回事,因为它发生,比如最终打印语句应该是这样的:Python跳过我的循环
处理多边形FeatureClasses ....
处理要素类>>
大厦字段信息:
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
显然,'pointlist'是空的。尝试打印它以确保:'print(pointlist)',就在循环之前。 – 2013-02-16 23:58:40
'print pointlist'会产生什么结果?通过外观的东西它是空的。 – Volatility 2013-02-16 23:58:47
我的问题之一是pointlist是空的。这是我的一个简单的解决方法,没有正确指定我的工作区路径名称 – user2079473 2013-02-17 19:46:12