|
Оглавление
ВведениеДовольно часто приходится читать различные массивы данных (числа), которые хранятся в текстовом файле в виде столбцов. Такие файлы еще иногда называют ASCII-data, и многие программы на выходе создают такие файлы, причем у файлов иногда может быть заголовок, а может его и не быть. Для удобного чтения и записи таких файлов я и написал небольшой класс на языке Python. Какие файлы можно читать с помощью coldata
Приведу несколько примеров файлов, которые можно читать с помощью этого класса: 0.0 0.0000 1.2512 Sample ASCII data Sample ASCII data ФайлыАрхив с исходниками и примерами файлов лежит здесь. Описание класса coldataДля использования класса coldata его в первую очередь надо импортировать из модуля coldata.py from coldata import coldata После этого класс coldata можно использовать в двух режимах:
Думаю, что не стоит подробно описывать каждый метод класса, а лучше приведу несколько примеров. Эти примеры прилагаются в архиве с исходником. Примеры чтения текстовых файлов#-*- coding: utf-8 -*- from coldata import coldata columns = coldata ("sample1.txt") # Для доступа к столбцам используем их индексы print columns[0] print columns[1] В результате чтения файла с содержимым (sample1.txt) Sample ASCII data мы получим результат [0.0, -1.1279999999999999, 2.3500000000000001, -1.258, -0.33000000000000002] Второй пример использует for для перебора столбцов. Файл sample2.txt отличается от предыдущего файла только тем, что в качестве разделителя дробной части используется запятая вместо точки. from coldata import coldata columns = coldata ("sample2.txt", skiprows=4) for col in columns: print col Обратите внимание, что в этом примере мы использовали еще один необязательный параметр конструктора - skiprows, значение которого обозначает сколько строк надо пропустить при чтении файла. В это количество строк входит и строки, образующие заголовок файла. В этом примере мы пропускаем 4 строки, 3 из которых образуют заголовок: Sample ASCII data Четвертая пропущенная строка уже является данными. Поэтому в качестве результата у нас будут столбцы на один элемент короче, чем в предыдущем примере, и в консоли мы увидим следующих результат работы: [-1.1279999999999999, 2.3500000000000001, -1.258, -0.33000000000000002] Пример записи текстовых файлов#-*- coding: utf-8 -*- from coldata import coldata columns = coldata () columns.addcolumn ([1.123, 5.358, -8.369, 2.0e-1, 15.6987]) columns.addcolumn ([6.3687, -9.3154, -7.1795, 8.2547, 0.2147]) print columns.tostr(format="%.5f", deliver=" ") columns.save ("out.txt", format="%.5f", deliver=" ") В этом примере мы сначала создаем класс coldata с помощью конструктора без параметров, а потом добавляем в него два столбца с помощью вызовов метода addcolumn(). С помощью функции tostr() формируем строку, содержащую данные, оформленные в виде столбцов. Функция save() сохраняет ту же самую строку в файл. Обе функции имеют два необязательных параметра:
В результате выполнения этого примера в консоли будет выведено: 1.12300 6.36870 То же самое будет сохранено в файл out.txt. В версии 1.6 модуля coldata добавилась функция save(), которая может сохранять массив столбцов в файл, не создавая экземпляр класса coldata в явном виде (внутри функция по-прежнему использует метод save() из coldata). Определение функции save(): save (columns, fname, format = "%f", deliver = "\t") Пример использования: #-*- coding: utf-8 -*- import coldata columns = [ [1.123, 5.358, -8.369, 2.0e-1, 15.6987], [6.3687, -9.3154, -7.1795, 8.2547, 0.2147] ] coldata.save (columns, "out_static.txt", format="%.5f", deliver=" ") Вот и все, как видите, пользоваться классом coldata очень просто. И в качестве небольшого оффтопика рекомендую почитать запись под названием Две программы для рисования графиков у меня в блоге, в которой я описывал две программы, которые могут отображать (визуализировать) данные, прочитанные из таких текстовых файлов. История версий1.7 (30.06.2009)
1.6
1.5
Пожалуйста, оцените материал
|