首页 > 解决方案 > 在循环中读取 csv 在不匹配的行处停止

问题描述

我正在尝试读取 csv,然后遍历 sde 以查找匹配的功能、它们的字段,然后打印它们。列表中有一个表格,我无法跳过它并继续阅读 csv。我得到“IOError:表 1 不存在”,我只得到表之前的功能。

import arcpy
from arcpy import env
import sys
import os
import csv

with open('C:/Users/user/Desktop/features_to_look_for.csv', 'r') as t1:
    objectsinESRI = [r[0] for r in csv.reader(t1)]

env.workspace = "//conn/features@dev.sde"
fcs = arcpy.ListFeatureClasses('sometext.*')

for fcs in objectsinESRI:
    fieldList = arcpy.ListFields(fcs)
    for field in fieldList:
        print fcs + " " + ("{0}".format(field.name))

示例 csv 行(似乎无法发布 excel 文件的屏幕截图)

feature 1
feature 2
feature 3
feature 4
table 1
feature 5
feature 6
feature 7
feature 8
feature 9

结果

feature 1
feature 2
feature 3
feature 4

期望的结果

feature 1
feature 2
feature 3
feature 4
feature 5
feature 6
feature 7
feature 8
feature 9

标签: pythoncsvarcgisarcpy

解决方案


如前所述,我对arcpy一无所知,但这似乎是开始的方式。查看文档,您的 objectsInEsri 似乎等同于示例中的数据集。从那里我推断出以下代码,根据 print(fc) 正在打印的内容,您可能需要扩展另一个 for。

所以试试这个:

for object in objectsInEsri:
    for fc in fcs:
        print(fc)

或者也许是这样:

for object in objectsInEsri:
    for fc in fcs:
        for field in arcpy.ListFields(fc)
            print(object + " " + ("{0}".format(field.name)))

那么我可能完全错了,但是然后先写outermore for,看看给你的是什么,然后从那里继续建设:)


推荐阅读