Иллюстрированный самоучитель по Mathematica 3/4

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

Система Mathematica имеет развитые средства для работы с потоками (streams) и файлами (files). Под потоком подразумевается непрерывная последовательность данных, циркулирующих внутри компьютера. Обмен потоками происходит практически непрерывно, например, при вводе поток ввода поступает от клавиатуры в компьютер, при печати поток данных поступает от компьютера в принтер через порт принтера и т. д.

Файлом является упорядоченная структура данных, имеющая имя и хранящаяся на каком-либо носителе, чаще всего на магнитном диске. Файлы могут иметь различные форматы и различный тип доступа к хранимой на них информации. Наиболее распространенные в системе Mathematica файлы документов являются файлами с последовательным доступом и имеют текстовый формат.

Последовательный доступ означает, что информация из открытого файла может быть считана строго последовательно от его начала до конца, отмеченного специальной меткой. Это напоминает считывание с магнитофонной кассеты. Текстовый формат означает, что все данные записаны в виде ASCII-кодов. Следовательно, прочесть такой файл можно с помощью любого текстового редактора, работающего с текстами в виде ASCII-кодов.

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

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

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

<<filename

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

Get["filename", key]

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

  • expr >> filename – передает значение ехрг в файл с заданным именем;
  • ехрг >>> filename – добавляет ехрг в конец файла с заданным именем.

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

  • Get ["filename", "key"] – читает файл, который закодирован функцией Encode с использованием ключа "key";
  • GetContext [ "context' " ] – загружает файл с заданным контекстом;
  • Put[expr1, expr2,…, "filename"] – записывает последовательность выражений expri в файл с именем filename;
  • PutAppend[expr1, expr2,…, "filename"] – присоединяет последовательность выражений expri к файлу с именем filename.

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

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

{{1.2.3},{4.5.6},{a,b,c}} 
>>C:\ma.val
  
<<C:\ma.val
{{1, 2, 3}, {4, 5, 6), {a, b, c}} {d,e,f} >>>C:\ma.val
  
<<C:\ma.val
{d, e, f}
  
!!C:\ma.val
1, 2, 3, 4, 5, 6, a, b, c d, e, f

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

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

  • ReadList ["filename" ] – читает все оставшиеся в файле "filename" выражения и возвращает их в виде списка;
  • ReadList ["filename", type] – читает из файла "filename" объекты указанного типа type до конца файла. Возвращает список считанных объектов;
  • ReadList ["filename", {typel, type2,…}] – читает объекты указанных типов type1 до конца файла filename;
  • ReadList [ "filename", types, n] – читает только первые п объектов указанных типов types из файла filename;
  • Save ["filename", x1, x2,…] – создает файл с заданным именем filename, содержащий значения переменных x1, х2,…;
  • ! command – исполняет заданную команду операционной системы.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.