Mathematica 9 is now available
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Mathematica >

Mathematica ファイルの読み書き

特に,テキスト型インターフェースのMathematica を使うとき,Mathematica 式の定義や結果の書かれたファイルを読み書きする必要が生じる.これをどのように行うかは,Mathematica ファイルの読込みと書出し操作」で一般的に述べられている.さらに,この節においても詳述されている.
<<file または Get["file"]ファイルを Mathematica の入力 式として読み込み,評価の結果を返す
FilePrint["file"]ファイル内容の表示

ファイルの読込み

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

ファイルへの式の書出し

式をファイルtmpに書き出す.
In[4]:=
Click for copyable input
ファイルの内容を表示する.
もうひとつ式を同じファイルに書き加える.
In[6]:=
Click for copyable input
式は2つとも書かれている.
expr>>>file とすると,Mathematica は新しい式をファイルの最後に付け加える.しかしexpr>>file ではファイルの内容を捨て,新しいexpr をファイルに上書きする.
>>または>>>によってファイルに式を書くと,式は普通Mathematica の入力形で書かれる.したがってこの式を後で読み込んで評価することができる.しかし別のフォーマットで式を保存することもできる.それには書いた式をOutputForm等のフォーマット指示子に入れてやる.
計算結果の式をファイルtmpに出力形で書き込む.
In[8]:=
Click for copyable input
ファイルtmpに書かれた式は出力形であることを見る.
ファイルを使う理由の多くは,後のMathematica セッションで読み込んでまた使うために,Mathematica オブジェクトの定義を保存しておくためである.>>>>>等のオペレータでMathematica の式をファイルに保存することができる.また,関数Saveを使えば,Mathematica オブジェクトの完全な定義を,後のMathematica セッションで利用するのに適した形で保存できる.
Save["file",symbol]記号の完全な定義をファイルに保存
Save["file","form"]名前が文字列のパターンform にマッチする記号の定義をファイルに保存
Save["file","context`"]指定したコンテキストのすべての記号の定義を保存
Save["file",{object1,object2,...}]複数のオブジェクトの定義を保存

定義の書出し

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

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

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

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

非常に大きな定義や複雑な定義を扱うときは,テキスト形式で保存するよりMathematica が直接理解する内部形式で保存した方がより効率的に処理を行うことができる.内部形式で保存するにはDumpSaveを使う.
fの定義をMathematica の内部形式で保存する.
In[22]:=
Click for copyable input
Out[22]=
<<を使って定義を読み込むことができる.
In[23]:=
Click for copyable input
<<Mathematica の内部形式で書かれた定義も理解し,適切な処理を行う.注意すべきことは,この内部形式はコンピュータによって異なることである.したがって,あるコンピュータで作られた.mxファイルは別のコンピュータでも読めるとは限らない.
DumpSave["package`", ...]の形式を使うとMathematica は定義をpackage.mx/system/package.mxの名前で保存する.ここでsystem はコンピュータの型を表す.
使っているコンピュータの機種を反映する名前のファイルが作られる.
In[24]:=
Click for copyable input
Out[24]=
<<はそのコンピュータに合わせて適切な名前を探し出す.
In[25]:=
Click for copyable input
Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team