ファイル名と検索
ディレクトリ操作
ファイル名の付け方は厳密にはコンピュータの機種によって異なる.しかし,Mathematica はすべてのシステムで機能するかなり汎用性のあるメカニズムを提供する.
Mathematica ではすべてのファイルはディレクトリの階層に分けられて保存されている.特定のファイルを探し出すには,Mathematica はそのファイル名と,それが属するディレクトリとを知らなければならない.
特定の時点では,ユーザは現ディレクトリにいて,そこからの相対位置としてディレクトリを指定することができる.例えば,現ディレクトリにあるファイルには,ディレクトリの指定を省略して,単にファイル名を指定するだけでアクセスできる.
ディレクトリ操作
| Out[1]= |  |
サブディレクトリ

を現ディレクトリに設定する.
| Out[2]= |  |
| Out[3]= |  |
| Out[4]= |  |
SetDirectoryを実行するとき,ディレクトリ名はオペレーティングシステムに合わせた形式で指定することができる.例えば,Unixシステムでは,ディレクトリの階層の1つ上のレベルのディレクトリは
で指定でき,ホームディレクトリは
で指定できる.
SetDirectoryで指定するディレクトリに移行するときはいつでも,Mathematica はそれまでにいたディレクトリを記憶しておく.ResetDirectoryによって,このディレクトリに戻ることができる.一般に,Mathematica はディレクトリのスタックをDirectoryStack[]に保存している.SetDirectoryを実行するたびに新たなディレクトリがこのスタックに追加され,ResetDirectoryを実行するたびに対応するディレクトリがスタックから削除される.
特別なディレクトリ
ファイルの検索
特定のファイルを指定すると,Mathematica はそのファイルをいくつかのステップで検索する.まず初めに,オペレーティングシステムまたはシェルに標準の様式を使う.
Mathematica は指定したファイル名をスキャンし,
,
,
,
,
,
,
,
等のメタ文字が含まれているかどうかを調べる.特殊文字が見付かれば,ファイル名全体をオペレーティングシステムまたはシェルに引き渡して解釈を促す.Unixシステムでは name*や
等は,この時点で展開される.しかし一般に,Mathematica はオペレーティングシステムまたはシェルが返す出力を取り,これをファイルのフルネームとみなす.
出力ファイルについては,これが Mathematica の行う処理のすべてである.Mathematica が指定したファイルを見出せないときは,その名前のファイルを新たに作り出す.
ファイルから入力を得ようとする場合,Mathematica はさらに次の処理をする.実行しようとしている関数のオプションPathの値を参照し,それに指定された検索パスを探す.デフォルトでPathには大域変数$Pathが指定されている.
| Get["file",Path->{"dir1","dir2",...}] | ディレクトリ から相対的に指定された位置にあるファイルを検索し読み込む |
| $Path | 入力ファイルの相対検索パス |
ファイルの検索パス
一般に,大域変数$Pathにはディレクトリを表す文字列のリストが割り当てられている.入力ファイルを指定すると,Mathematica はこのリストに現れるディレクトリを順に現ディレクトリに移し,その中に要求されたファイルがあるかどうかを調べる.
$Pathの典型的な設定.現ディレクトリ(

)とホームディレクトリ(

)が初めに現れる.
| Out[5]= |  |
ファイルを探すのにFindFileを使うこともできる.
$Path上のファイルを見付ける
FindFileは$Path上のディレクトリすべてを検索し,Get,Needs,その他の関数でロードされるファイルの絶対名を返す.FileExistsQは,指定された名前のファイルが存在するかどうかを検定する.
| Out[5]= |  |
FindFileをパッケージ名に適用すると,そのパッケージのinit.mファイルの絶対名が返される.
| Out[5]= |  |
ディレクトリの内容の一覧
| FileNames[] | 現ディレクトリにあるすべてのファイル |
| FileNames["form"] | 文字列パターン form にマッチする現ディレクトリのすべてのファイルのリスト |
| FileNames[{"form1","form2",...}] | 任意の文字列パターン にマッチする現ディレクトリのすべてのファイルのリスト |
| FileNames[forms,{"dir1","dir2",...}] | 文字列パターン forms にマッチするすべての のディレクトリのファイルのリスト |
| FileNames[forms,dirs,n] | n レベル下までのすべてのサブディレクトリに含まれるファイル |
| FileNames[forms,dirs,Infinity] | すべてのサブディレクトリのファイルを含む |
| FileNames[forms,$Path,Infinity] | $Pathに指定されているサブディレクトリのうちのいずれかに含まれ,名前がパターン forms にマッチするすべてのファイルを列挙 |
ファイル検索におけるディレクトリ指定
FileNamesはファイル名を表す文字列のリストを返す.現ディレクトリにないファイルを示すときは,現ディレクトリからの相対パスで表したファイル名となる.すべてのファイル名はそれが作られたコンピュータシステムにおけるフォーマットで与えられる.
現ディレクトリにある拡張子

を持つすべてのファイルのリスト.
| Out[6]= |  |
現ディレクトリにあって,

で始まる名前を持つファイルと,サブディレクトリにあって

で始まる名前を持つファイル.
| Out[7]= |  |
FileNamesに与えるファイル名の形式には,Mathematica のどの文字列パターンオブジェクトでも,通常~~演算子と組み合わせて使うことができる.
現行の作業ディレクトリのすべてのファイルの中で,その名前が

にマッチするもののリストを返す.
| Out[3]= |  |
以下は名前が形式

であるファイルだけをリストする.ここで
d は1桁以上の数列である.
| Out[3]= |  |
Filenameの作成
ファイル名の操作
異なるコンピュータシステムでは異なる方法でファイル名が作られることに注意する.したがって,例えば,Windowsシステムでは
の形の名前が使われ,Unixシステムでは
の形の名前が使われる.関数FileNameJoinは使っているコンピュータに合わせて適切なファイル名を作る.
| Out[8]= |  |
| Out[9]= |  |
ファイル名を操作する
FileNameSplitやFileNameJoin等の関数は,ファイル名に対して追加の操作をすることができる.これらはオペレーティングシステムにより使用されるファイル名のセパレータを尊重してファイル名を適切に分割する.FileNameJoinはデフォルトで,使用中のオペレーティングシステムに適した正則形式で名前を生成するよう$PathnameSeparatorを使う.
関連ファイルの組を作るに際して,1つのファイルを読むときに別のファイルを参照できるようにしておくと便利なことがある.大域変数$InputFileNameは今入力が読み込まれているファイル名を与える.DirectoryNameとToFileNameを使って,関連する他のファイル名を指定することができる.
Mathematica で読み込み中のファイルの参照法
Mathematica でファイルを扱う場合の問題は,ファイルおよびディレクトリの名前の形式がコンピュータシステムにより異なるという点である.つまり,標準 Mathematica パッケージを含むファイルの名前等が,システムにより大きく異なる可能性があるということである.しかし,慣用的なシーケンスを使うと,すべての氏s手生むで同じコマンドを使って標準 Mathematica パッケージを読み込むことができる.そのためには,それぞれのパッケージで形式
のいわゆる Mathematica コンテキストを定義するのである.それぞれのシステムで,すべてのファイルが定義するコンテキストに対応した名前を持つようになる.ここでコマンド
を使うと,Mathematica はそのコンテキスト名を,使用中のコンピュータシステムに適したファイル名に自動的に変換する.
標準のFilename拡張子
| file.m | Mathematica 式を保存したテキスト形式のファイル |
| file.nb | Mathematica ノートブック形式のファイル |
| file.mx | Mathematica 式の定義を保存したDumpSave形式のファイル |
典型的な Mathematica ファイルの指定書式
Mathematica のノートブック型インターフェースを使っている場合,Mathematica の入出力だけでなくテキスト,グラフィックス,他の文書要素を含む完全なノートブックを Mathematica フロントエンドで保存することができる.
Mathematica ノートブックファイルには,拡張子.nbで終るファイル名を付けるようにする.ほとんどのバージョンの Mathematica でこの方法が認識される.
ファイル名と拡張子
FileBaseNameとFileExtensionを使うと,ファイル名とその拡張子を抽出することができる.
Mathematica のフロントエンドでノートブックを開くと,ノートブックの内容は即座に表示されるが,評価のためのカーネルへの内容の送出は,通常,ユーザからの要求があるまで行われない.
ただし,Mathematica ノートブック内でフロントエンドのメニューを使い,特定のセルを初期化セルに指定しておけば,ノートブックを開くたびにセルの内容は自動的に評価される.
2番目のセルのセルブラケットにアルファベットの
Iが付いているが,これは初期化セルと呼ばれ,ノートブックが開かれるたびに評価される.
場合によっては作成した数式等をノートブックとパッケージの両方のファイル形式で保存しておくと便利である.ノートブックファイルには説明文と一緒に式を入れておけるし,パッケージファイルには Mathematica が直接理解できる定義だけを分けて保存しておける.このような形態のファイル保存を行うには,すべての式を初期化セルに入れておけばよい.ノートブックが保存されるたびに,もとの定義が.m形式のファイルに自動保存される.