Чтение CSV в цикле останавливается на строке, которая не совпадает - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь прочитать 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

1 Ответ

0 голосов
/ 14 марта 2019

Итак, как уже говорилось, я не имею ни малейшего представления о arcpy, но, похоже, так и начнем. Глядя на документы , ваш objectsInEsri кажется эквивалентом наборов данных в примере. Оттуда я экстраполирую следующий код, который, в зависимости от того, какой print (fc) печатает, может потребоваться расширить еще одним для.

Так попробуйте это:

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)))

Тогда я могу быть совершенно не прав, но потом просто напишите сначала постороннее для, посмотрите, что вам дает, и продолжайте строить оттуда:)

...