Mathematica ファイルの読み書き
外部ファイルへの Mathematica 式の保存
式の定義や Mathematica の結果は,コンピュータシステムのファイルに保存することができる.最も一般的なアプローチとしては,Mathematica の入力として適切なテキスト形式ですべての情報を保存する方法がある.このアプローチを使えば,生成されたファイルは,どの Mathematica のバージョンで使用しても正確に読み込ませることができる.さらに,テキストファイルなので,各種の一般的なプログラム,例えば,テキストエディタでも編集ができるという利点もある.
| <<file または Get["file"] | ファイルを Mathematica の入力 式として読み込み,ファイルの最後の式を返す |
| FilePrint["file"] | ファイル内容の表示 |
| expr>>file または Put[expr,"file"] | 式をファイルに書き出す |
| expr>>>file または PutAppend[expr,"file"] | 式をファイルに追記する |
ファイルの読込みと書出し

を因数分解し,結果を

の名前でファイルに保存する.
保存した

の内容を確認する.
Mathematica の入力として直接使えるようになっていることが分かる.
実際に

を読み込ませ,式を評価させる.
| Out[3]= |  |
ファイル

の内容を表示する.
ファイルを読み込み,式として評価してその結果を返す.
| Out[2]= |  |
指定のファイルが見付からないとき
Mathematica はメッセージを表示し,
$Failedを返す.
| Out[19]= |  |
<<file によってファイルを読むと,Mathematica はこれを評価した最終的な結果を返す.このときの表示を抑制するには,ファイルの最後の式の末尾をセミコロンとすればよい.あるいは明示的に最後にNullと書いてもよい.
Mathematica がファイルを読み込んでシンタックスエラーに出会うと,エラーを表示しファイルの残りの部分を無視し,$Failedを返す.シンタックスエラーがパッケージの途中で生じると,ここではBeginPackage等のコンテキスト操作関数が使われているが,Mathematica はパッケージが読まれる前のコンテキストに復帰しようと試みる.
複数の Mathematica 式の保存
Mathematica の入力ファイルにはいくつの式が書かれていてもよい.同一の式は何行にも渡って書かれていても構わないが,それぞれの式は新たな行に書かれていなければならない.標準的な対話的 Mathematica セッションと同様,式は完成されると同時に評価される.しかし,対話的なセッションと異なり,ファイルに入力式を書く場合は任意の場所に空行を書いてもよく,これは無視される.
とすると,Mathematica は新しい式をファイルの最後に付け加える.しかし
ではファイルの内容を捨て,新しい expr をファイルに上書きする.
式をファイル

に書き出す.
コマンドラインのオペレーティングシステムに馴染みのある人であれば,Mathematica の出力先変更演算子
,
,
がコマンドライン演算子の
,
,
に対応していることが分かるであろう.
異なる形式での Mathematica 式の保存
または
によってファイルに式を書くと,式は普通 Mathematica の入力形で書かれる.したがってこの式を後で読み込んで評価することができる.しかし別のフォーマットで式を保存することもできる.それには書いた式をOutputForm等のフォーマット指示子に入れてやる.
計算結果の式をファイル

に出力形で書き込む.
ファイル

に書かれた式は出力形であることを見る.
Mathematica オブジェクトの定義の保存
ファイルを使う理由の多くは,後の Mathematica セッションで読み込んでまた使うために,Mathematica オブジェクトの定義を保存しておくためである.
や
等の演算子で Mathematica の式をファイルに保存することができる.また,関数Saveを使えば,Mathematica オブジェクトの完全な定義を,後のMathematica セッションで利用するのに適した形で保存できる.
| Save["file",symbol] | 記号の完全な定義をファイルに保存 |
| Save["file","form"] | 名前が文字列のパターン form にマッチする記号の定義をファイルに保存 |
| Save["file","context`"] | 指定したコンテキストのすべての記号の定義を保存 |
| Save["file",{object1,object2,...}] | 複数のオブジェクトの定義を保存 |
変数・関数定義のテキスト形式による保存
式を記号

に割り当てる.
| Out[51]= |  |
保存したファイルに

の定義が書かれている.
すでに定義した記号

を含む関数

の定義.

の完全な定義をファイルに保存.
そのファイルは

そのものの定義だけでなく,

が使う記号

の定義も含んでいる.
以下で

と

の定義をクリアする.
ファイル

を読み込むだけで,保存した定義を再び利用することができる.
| Out[58]= |  |
関数Saveは,Mathematica の定義式を表示するDefinitionとFullDefinitionの出力形式を使う.場合によっては,これらの出力形式を明示的に使う方が便利なこともある.
| Out[59]= |  |
| Out[60]= |  |
新たなオブジェクトを Mathematica で定義するとき,しばしばその定義は以前に定義した別のオブジェクトに依存することがある.今保存しようとしている定義でオブジェクトを作り出すことができるためには,その定義だけでなく,それが利用する別の定義もともに保存しておくことが重要である.関数Saveは定義の内容をチェックし,その定義に必要な別の定義も同時に保存する.しかし,不必要に多くの式を保存するのを避けるため,Saveは属性Protectedを持つ記号を保存することはない.そのような記号は組み込まれていると仮定される.関連する定義も保存されるので,Saveで書き出された出力を別の Mathematica セッションで読み込めば,保存したときと同じオブジェクトが作られるはずである.
エンコードした形式での Mathematica 定義の保存
Mathematica に読み込ませるファイルを作るとき,読んだり編集したりできるようにテキスト形式のファイルとするのが普通である.しかし,場合によっては内容をエンコードして直接読んだり修正したりできないが,Mathematica には読み込めるようなファイルが要求されることもある.このようなエンコードされたファイルは Mathematica 関数Encodeを使って作ることができる.
| Encode["source","dest"] | source ファイルをエンコードしてファイル dest に書き出す |
| <<dest | エンコードしたファイルを読み込む |
| Encode["source","dest","key"] | キーを与えてエンコード |
| Get["dest","key"] | キーを与えてエンコードしたファイルを読み込む |
| Encode["source","dest",MachineID->"ID"] | 特定のIDを持つコンピュータでのみ読めるエンコードしたファイルを作る |
エンコードしたファイルの読み書き
式の結果をテキスト形式でファイル

に書き出す.
ファイル

をエンコードした形式でファイル

に書き出す.
エンコードされたファイルの内容を見る.初めの
Mathematica コメントのみが理解できる.
ファイルはエンコードされているが,

を使って
Mathematica に読み込ませることができる.
| Out[64]= |  |
| DumpSave["file.mx",symbol] | 記号の定義を Mathematica の内部形式で保存 |
| DumpSave["file.mx","context`"] | コンテキストに含まれるすべての記号の定義を保存 |
| DumpSave["file.mx",{object1,object2,...}] | コンテキストに含まれる複数の記号の定義を保存 |
| DumpSave["package`",objects] | 名前を指定した記号の定義の保存 |
定義を Mathematica の内部形式で保存する方法
非常に大きな定義や複雑な定義を扱うときは,テキスト形式で保存するより Mathematica が直接理解する内部形式で保存した方がより効率的に処理を行うことができる.内部形式で保存するにはDumpSaveを使う.

の定義を
Mathematica の内部形式で保存する.
| Out[22]= |  |

を使って定義を読み込むことができる.
は Mathematica の内部形式で書かれた定義も理解し,適切な処理を行う.注意すべきことは,この内部形式はコンピュータによって異なることである.したがって,あるコンピュータで作られた
ファイルは別のコンピュータでも読めるとは限らない.
DumpSave["package`", ...]の形式を使うと Mathematica は定義を
の名前で保存する.ここで system はコンピュータの型を表す.
使っているコンピュータの機種を反映する名前のファイルが作られる.
| Out[24]= |  |

はそのコンピュータに合わせて適切な名前を探し出す.