2015-03-15 1 views
0

В качестве базовой проверки для сотен файлов ascii я бы хотел проверить, что каждый имеет правильное количество строк и столбцы. Первые 6 строк каждого файла не являются частью матричной матрицы 23x23, каждая из которых содержит. Я пробовал различные возможности для чтения размера матрицы, которые я превратил в строки комментариев (см. Ниже), но теперь я думаю, что мне нужен новый способ читать массивы, отличные от табличных таблиц arcpy. Я был бы открыт для использования модулей, используемых в пандах. Есть идеи? Благодарю.импортировать много файлов ascii в каталог, читать как массив, печатать количество строк, столбцы для каждого файла

import arcpy, numpy 
from arcpy import env 

env.workspace = r"C:\VMshared\small_example_valley5\SDepth1" 

for file in arcpy.ListTables(): 
    #numpy.loadtxt(file,dtype = float, "#", delimiter = ' ', "#", skiprows = '6') 
    outfile = numpy.loadtxt(file, skiprows = '6') 
    print numpy.shape(outfile) 
    #print enumerate(file) 
    #print len(file) + len(file.T) 
    #print len(file) + map(len,file) 
+0

Я думаю, что вы на правильном пути с numpy. После того, как вы загрузите каждый файл, вы можете проверить его, чтобы увидеть, имеет ли его правильный размер –

+0

. Я бы сделал это с помощью print numpy.shape (файла), однако каждая итерация предоставила бы это как следующий результат:() --- явно пустой матрицы. Другое замечание состоит в том, что разделитель представляет собой единое пространство, а не запятую, как с csv. – AF2k15

+0

Простите меня, если я ошибаюсь, но разве вы не должны делать numpy.shape (outfile) или outfile.shape? –

ответ

0

Я думаю, что numpy можно использовать для этого.

for file in arcpy.ListTables(): 
     outfile = numpy.loadtxt(file, delimiter=" ", skiprows = 6) 
     if outfile.shape != (23,23): 
      print file + " has an incorrect number of rows or columns" 
+0

Хммм ..... Я видел эту ошибку еще до того, как я попробовал свой код, поэтому, возможно, это что-то еще. Ошибка выполнения Traceback (последний последний звонок): Файл «», строка 7, in Файл «C: \ Python27 \ ArcGIS10.1 \ lib \ site-packages \ numpy \ lib \ npyio.py», строка 690, in loadtxt fh = iter (open (fname, 'U')) IOError: [Errno 2] Нет такого файла или каталога: u'snowdepthN0001.asc 'Спасибо, хотя, мне было интересно, как сказать код для флага подозрительный файл. Странная вещь об этом сообщении об ошибке заключается в том, что он правильно отображает фактическое имя файла ascii. – AF2k15

+0

Итак, эти файлы находятся в том же каталоге, в котором вы запускаете свой скрипт/код? –

+0

Извините, если я отвечаю на ваши вопросы неправильно, но нет, сценарий сохраняется в папке моих документов - C: \ Users \ afullhar \ Documents \ ArcGIS. Вы подразумеваете, что он должен находиться в той же папке, что и файлы ascii? – AF2k15