IndexError: список индексов вне диапазона ' - PullRequest
0 голосов
/ 18 февраля 2012

Я пишу код с использованием python для генерации точечного шейп-файла в ArcMAP. У меня 1000 случайных возможностей по 50 очков (в FileA (1000: 50), и мне нужно попробовать все из них.

Координаты X каждой точки = ФайлB (:, 1). Координаты Y каждой точки = ФайлB (:, 2).

для генерации последовательности, я беру первую строку FileA, а число в FileA (1,1) соответствует положению в новой последовательности точки 1 в FileB

Я пытаюсь создать цикл, в котором я создаю эти последовательности, следуя позиции в каждой строке FileA.

У меня есть предыдущий пост: AttributeError: у объекта 'str' нет атрибута 'toInteger'

Я изменил 'entry.toInteger () [0]' на 'int (entry [])'. Смешивание языков ...

У меня новая ошибка:

'tempXYFile.writerow('{0},{1}'.format(coordinates[int(entry)][0],coordinates[int(‌​entry)][1])) IndexError: list index out of range' 

Буду признателен за любую помощь!

Это мой код:

import csv

# create 1000 XY sequences
print 'Start of the script'
sequences = csv.reader(open('50VolcanoPaleoOrder-11-01-2012.csv','rb'),delimiter=',')
coordinates = []

# read coordinates of volcanos and store in memory
print 'Start reading in the coordinates into the memory'
coordinates_file = csv.reader(open('seq50.csv','rb'),delimiter=',')   

for coordinate in coordinates[1:]:
    coordinates.append(coordinate)
del coordinates_file

i = 1
for sequence in sequences:
    print 'sequence # {0}'.format(i) 
    j = 1           
    tempXYFile = csv.writer(open('tempXY.csv','w+'),delimiter=',') #add the parameter to create a file if does not exist                  
    for entry in sequence:         
        tempXYFile.writerow('{0},{1}'.format(coordinates[int(entry)][0],coordinates[int(entry)][1]))
        print 'Entry # {0}: {1},{2}'.format(j, coordinates[int(entry)][0],coordinates[int(entry)][1]) 
        j = j + 1
    i = i + 1
    del tempXYFile

print 'End of Script'

1 Ответ

2 голосов
/ 18 февраля 2012

Сообщения об ошибках в Python не такие непроницаемые, как ошибки компиляции на некоторых языках;вам следует попытаться понять, о чем они вам говорят.

IndexError: list index out of range

- это признак того, что вы, в общем-то, получаете доступ к списку, используя индекс, который не существует.Что-то вроде «a = [1,2]; print a [79]» выдаст вам это сообщение.В этом случае, если проблема находится в строке

tempXYFile.writerow('{0},{1}'.format(coordinates[int(entry)][0],coordinates[int(‌​entry)][1]))

, то очень высоки шансы, что либо у координат нет элемента int (entry), либо у координат [int (entry)]не имеет 0-го или 1-го элемента.

Поэтому перед этой строкой попробуйте вставить операторы print:

print int(entry)
print coordinates
print coordinates[int(entry)]

и посмотрите, что вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...