Mathematica ファイルの読み書き

外部ファイルへの Mathematica 式の保存

式の定義や Mathematica の結果は,コンピュータシステムのファイルに保存することができる.最も一般的なアプローチとしては,Mathematica の入力として適切なテキスト形式ですべての情報を保存する方法がある.このアプローチを使えば,生成されたファイルは,どの Mathematica のバージョンで使用しても正確に読み込ませることができる.さらに,テキストファイルなので,各種の一般的なプログラム,例えば,テキストエディタでも編集ができるという利点もある.

<<file または Get["file"]ファイルを Mathematica の入力 式として読み込み,ファイルの最後の式を返す
FilePrint["file"]ファイル内容の表示
expr>>file または Put[expr,"file"]式をファイルに書き出す
expr>>>file または PutAppend[expr,"file"]式をファイルに追記する

ファイルの読込みと書出し

を因数分解し,結果をの名前でファイルに保存する.
In[1]:=
Click for copyable input
保存したの内容を確認する.Mathematica の入力として直接使えるようになっていることが分かる.
実際にを読み込ませ,式を評価させる.
In[3]:=
Click for copyable input
Out[3]=
ファイルの内容を表示する.
ファイルを読み込み,式として評価してその結果を返す.
In[2]:=
Click for copyable input
Out[2]=
指定のファイルが見付からないとき Mathematica はメッセージを表示し,$Failedを返す.
In[19]:=
Click for copyable input
Out[19]=

<<file によってファイルを読むと,Mathematica はこれを評価した最終的な結果を返す.このときの表示を抑制するには,ファイルの最後の式の末尾をセミコロンとすればよい.あるいは明示的に最後にNullと書いてもよい.

Mathematica がファイルを読み込んでシンタックスエラーに出会うと,エラーを表示しファイルの残りの部分を無視し,$Failedを返す.シンタックスエラーがパッケージの途中で生じると,ここではBeginPackage等のコンテキスト操作関数が使われているが,Mathematica はパッケージが読まれる前のコンテキストに復帰しようと試みる.

複数の Mathematica 式の保存

Mathematica の入力ファイルにはいくつの式が書かれていてもよい.同一の式は何行にも渡って書かれていても構わないが,それぞれの式は新たな行に書かれていなければならない.標準的な対話的 Mathematica セッションと同様,式は完成されると同時に評価される.しかし,対話的なセッションと異なり,ファイルに入力式を書く場合は任意の場所に空行を書いてもよく,これは無視される.

とすると,Mathematica は新しい式をファイルの最後に付け加える.しかし ではファイルの内容を捨て,新しい expr をファイルに上書きする.

式をファイルに書き出す.
In[4]:=
Click for copyable input
ファイルの内容を表示する.
もうひとつ式を同じファイルに書き加える.
In[6]:=
Click for copyable input
式は2つとも書かれている.

コマンドラインのオペレーティングシステムに馴染みのある人であれば,Mathematica の出力先変更演算子がコマンドライン演算子のに対応していることが分かるであろう.

異なる形式での Mathematica 式の保存

またはによってファイルに式を書くと,式は普通 Mathematica の入力形で書かれる.したがってこの式を後で読み込んで評価することができる.しかし別のフォーマットで式を保存することもできる.それには書いた式をOutputForm等のフォーマット指示子に入れてやる.

計算結果の式をファイルに出力形で書き込む.
In[8]:=
Click for copyable input
ファイルに書かれた式は出力形であることを見る.

Mathematica オブジェクトの定義の保存

ファイルを使う理由の多くは,後の Mathematica セッションで読み込んでまた使うために,Mathematica オブジェクトの定義を保存しておくためである.等の演算子で Mathematica の式をファイルに保存することができる.また,関数Saveを使えば,Mathematica オブジェクトの完全な定義を,後のMathematica セッションで利用するのに適した形で保存できる.

Save["file",symbol]記号の完全な定義をファイルに保存
Save["file","form"]名前が文字列のパターン form にマッチする記号の定義をファイルに保存
Save["file","context`"]指定したコンテキストのすべての記号の定義を保存
Save["file",{object1,object2,...}]複数のオブジェクトの定義を保存

変数・関数定義のテキスト形式による保存

式を記号に割り当てる.
In[51]:=
Click for copyable input
Out[51]=
の定義をSaveでファイルに書き出す.
In[52]:=
Click for copyable input
保存したファイルにの定義が書かれている.
すでに定義した記号を含む関数の定義.
In[54]:=
Click for copyable input
の完全な定義をファイルに保存.
In[55]:=
Click for copyable input
そのファイルはそのものの定義だけでなく,が使う記号の定義も含んでいる.
以下での定義をクリアする.
In[57]:=
Click for copyable input
ファイルを読み込むだけで,保存した定義を再び利用することができる.
In[58]:=
Click for copyable input
Out[58]=

関数Saveは,Mathematica の定義式を表示するDefinitionFullDefinitionの出力形式を使う.場合によっては,これらの出力形式を明示的に使う方が便利なこともある.

出力形式Definition[f]f の定義式を表示する.
In[59]:=
Click for copyable input
Out[59]=
一方FullDefinition[f]f の定義が参照するオブジェクトの定義も含む.
In[60]:=
Click for copyable input
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を持つコンピュータでのみ読めるエンコードしたファイルを作る

エンコードしたファイルの読み書き

式の結果をテキスト形式でファイルに書き出す.
In[61]:=
Click for copyable input
ファイルをエンコードした形式でファイルに書き出す.
In[62]:=
Click for copyable input
エンコードされたファイルの内容を見る.初めの Mathematica コメントのみが理解できる.
ファイルはエンコードされているが,を使って Mathematica に読み込ませることができる.
In[64]:=
Click for copyable input
Out[64]=
DumpSave["file.mx",symbol]記号の定義を Mathematica の内部形式で保存
DumpSave["file.mx","context`"]コンテキストに含まれるすべての記号の定義を保存
DumpSave["file.mx",{object1,object2,...}]コンテキストに含まれる複数の記号の定義を保存
DumpSave["package`",objects]名前を指定した記号の定義の保存

定義を Mathematica の内部形式で保存する方法

非常に大きな定義や複雑な定義を扱うときは,テキスト形式で保存するより Mathematica が直接理解する内部形式で保存した方がより効率的に処理を行うことができる.内部形式で保存するにはDumpSaveを使う.

の定義を Mathematica の内部形式で保存する.
In[22]:=
Click for copyable input
Out[22]=
を使って定義を読み込むことができる.
In[23]:=
Click for copyable input

Mathematica の内部形式で書かれた定義も理解し,適切な処理を行う.注意すべきことは,この内部形式はコンピュータによって異なることである.したがって,あるコンピュータで作られたファイルは別のコンピュータでも読めるとは限らない.

DumpSave["package`", ...]の形式を使うと Mathematica は定義を の名前で保存する.ここで system はコンピュータの型を表す.

使っているコンピュータの機種を反映する名前のファイルが作られる.
In[24]:=
Click for copyable input
Out[24]=
はそのコンピュータに合わせて適切な名前を探し出す.
In[25]:=
Click for copyable input
New to Mathematica? Find your learning path »
Have a question? Ask support »