Мониторинг обменных курсов валют
18c0693f

Упрощенная работа с файлами


Прежде чем рассматривать весьма обширные возможности системы по работе с файлами в целом, отметим упрощенный прием вызова файла с помощью двойного символа «<<»:

<<filename

Эта команда считывает файл с указанным именем filename и заносит в память компьютера содержащиеся в нем определения. Имя файла надо указывать полностью, то есть вместе с расширением. Исключением является случай, когда файл находится в основном каталоге системы. Эта команда эквивалентна функции

Get["filename", key]

Для записи объекта (переменной, массива, списка и т. д.) в файл служат упрощенные команды:

Указанные команды по существу есть укороченные (и потому более удобные) формы следующих функций:

Еще одна упрощенная функция — ! ! filename — выводит содержимое файла с заданным именем.

Следующие примеры показывают запись списка в файл C:\ma.vat, его считывание, затем добавление в файл еще одного списка и контроль контекста файла:

{{l,2,3},{4,5,6},{a,b,c}}>>C:\ma.val

<<С: \ma. val

{{1, 2, 3}, {4, 5, б), {а, b, с}} {d,e,f}>>>C: \ma.val

<<С: \та. val

{d, e, f}

!!С:\mа.val

1, 2, 3, 4, 5, б, а, b, с d, e, f

Такая форма вызова особенно удобна для вызова файлов пакетов расширений и применений системы. Имя файла указывается по правилам, принятым в MS-DOS. Файлы пакетов применений имеют расширение .т.
Мы уже приводили примеры использования определений, содержащихся в файлах пакетов расширения системы.

Имеется еще ряд функций для работы с файлами:

Допустим, что в любом текстовом редакторе создан файл с полным именем C:\datas.txt в ASCII-формате, содержащий просто шесть чисел с разделительными пробелами, размещенные в двух строках и представляющие массив 2x3 элемента:

1 11.2 34.5

2. 3.4 56

Тогда о структуре файла можно судить, используя команду

!!С:\datas.txt

1 1.2 34.5 2. 3.4 56.

Нетрудно заметить, что структура файла соответствует структуре массива. Однако считывание файла командой «name дает следующий результат:

<<С: \datas. txt

380.8

Результат представляет вычисленное выражение второй строки файла. Считывание функцией ReadList без дополнительного аргумента также дает ошибочный результат:

ReadList["С:\datas.txt"]

{41.4, 380.8}

Нетрудно подметить, что функция восприняла каждую строку содержимого файла как результат перемножения трех чисел (пробел на языке Mathematica означает умножение). С дополнительным параметром Number все числа считываются верно:

ReadList["С:\datas.txt", Number]

{1, 1.2, 34.5, 2., 3.4, 56.}

Однако мы получили одномерный список — данные просто считываются построчно.


Применение дополнительного параметра в виде {Number, Number} дает следующий результат:

ReadList["С:.txt", {Number, Number}]

{{1, 1.2), {34.5, 2.}, {3.4, 56.}}

Правильный результат можно получить, используя опцию RecordList->True: .

ReadList["C:.txt",Number,RecordLists-XTrue]

{{1, 1.2, 34.5), {2., 3.4, 56.}}

Для загрузки файлов пакетов расширений (Add-On) используются функции, позволяющие задать контекст файлов (подробнее о контекстах речь пойдет в уроке 10):

Загрузка файлов с указанием их контекстов позволяет избежать конфликтов между разными пакетами расширения, используемыми одновременно (см. более подробно урок 10).






Самый выгодный курс обмена валюты