ファイル名と検索
ファイル名の付け方は厳密にはコンピュータの機種によって異なる.しかし,
Mathematica はすべてのシステムで機能するかなり汎用性のあるメカニズムを提供する.
「ファイルの検索とこれに関連した操作手順」で述べたように,
Mathematica ではすべてのファイルはディレクトリの階層に分けられて保存されている.特定のファイルを探し出すには,
Mathematica はそのファイル名と,それが属するディレクトリとを知らなければならない.
特定の時点では,ユーザは現ディレクトリ(
current working directory)にいて,そこからの相対位置としてディレクトリを指定することができる.例えば,現ディレクトリにあるファイルには,ディレクトリの指定を省略して,単にファイル名を指定するだけでアクセスできる.
ディレクトリ操作
| Out[1]= |  |
|
サブディレクトリ Packagesを現ディレクトリに設定する.
| Out[2]= |  |
|
| Out[3]= |  |
|
| Out[4]= |  |
|
SetDirectoryを実行するとき,ディレクトリ名はオペレーティングシステムに合わせた形式で指定することができる.例えば,Unixシステムでは,ディレクトリの階層の1つ上のレベルのディレクトリは
..で指定でき,ホームディレクトリは
~で指定できる.
SetDirectoryで指定するディレクトリに移行するときはいつでも,
Mathematica はそれまでにいたディレクトリを記憶しておく.
ResetDirectoryによって,このディレクトリに戻ることができる.一般に,
Mathematica はディレクトリのスタックを
DirectoryStack[]に保存している.
SetDirectoryを実行するたびに新たなディレクトリがこのスタックに追加され,
ResetDirectoryを実行するたびに対応するディレクトリがスタックから削除される.
特別なディレクトリ
特定のファイルを指定すると,
Mathematica はそのファイルをいくつかのステップで検索する.まず初めに,オペレーティングシステムまたはシェルに標準の様式を使う.
Mathematica は指定したファイル名をスキャンし,
*,
$,
~,
?,
[,
",\ ,
'等のメタ文字が含まれているかどうかを調べる.特殊文字が見付かれば,ファイル名全体をオペレーティングシステムまたはシェルに引き渡して解釈を促す.Unixシステムでは
name*や
$VAR 等は,この時点で展開される.しかし一般に,
Mathematica はオペレーティングシステムまたはシェルが返す出力を取り,これをファイルのフルネームとみなす.
出力ファイルについては,これが
Mathematica の行う処理のすべてである.
Mathematica が指定したファイルを見出せないときは,その名前のファイルを新たに作り出す.
ファイルから入力を得ようとする場合,
Mathematica はさらに次の処理をする.実行しようとしている関数のオプション
Pathの値を参照し,それに指定された検索パスを探す.デフォルトで
Pathには大域変数
$Pathが指定されている.
| Get["file",Path->{"dir1","dir2",...}] |
| ディレクトリdiri から相対的に指定された位置にあるファイルを検索し読み込む |
| $Path | 入力ファイルの相対検索パス |
ファイルの検索パス
一般に,大域変数
$Pathにはディレクトリを表す文字列のリストが割り当てられている.入力ファイルを指定すると,
Mathematica はこのリストに現れるディレクトリを順に現ディレクトリに移し,その中に要求されたファイルがあるかどうかを調べる.
$Pathの典型的な設定.現ディレクトリ( .)とホームディレクトリ( ~)が初めに現れる.
| Out[5]= |  |
|
| FileNames[] | 現ディレクトリにあるすべてのファイル |
| FileNames["form"] | 文字列パターンform にマッチする現ディレクトリのすべてのファイルのリスト |
| FileNames[{"form1","form2]",...}] | 任意の文字列パターンformi にマッチする現ディレクトリのすべてのファイルのリスト |
| FileNames[forms,{"dir1","dir2",...}] |
| 文字列パターン forms にマッチするすべての diri のディレクトリのファイルのリスト |
| FileNames[forms,dirs,n] | n レベル下までのすべてのサブディレクトリに含まれるファイル |
| FileNames[forms,dirs,Infinity] |
| すべてのサブディレクトリのファイルを含む |
| FileNames[forms,$Path,Infinity] |
| $Pathに指定されているサブディレクトリのうちのいずれかに含まれ,名前がパターン forms にマッチするすべてのファイルを列挙 |
ファイル検索におけるディレクトリ指定
現ディレクトリにある拡張子 .mを持つすべてのファイルのリスト.
| Out[6]= |  |
|
現ディレクトリにあって, aで始まる名前を持つファイルと,サブディレクトリにあって Pで始まる名前を持つファイル.
| Out[7]= |  |
|
FileNamesはファイル名を表す文字列のリストを返す.現ディレクトリにないファイルを示すときは,現ディレクトリからの相対パスで表したファイル名となる.すべてのファイル名はそれが作られたコンピュータシステムにおけるフォーマットで与えられる.
ファイル名の操作
異なるコンピュータシステムでは異なる方法でファイル名が作られることに注意する.したがって,例えば,Windowsシステムでは
dir:\dir\dir\name の形の名前が使われ,Unixシステムでは
dir/dir/name の形の名前が使われる.関数
ToFileNameは使っているコンピュータに合わせて適切なファイル名を作る.
| Out[8]= |  |
|
| Out[9]= |  |
|
関連ファイルの組を作るに際して,1つのファイルを読むときに別のファイルを参照できるようにしておくと便利なことがある.大域変数
$Inputはいま入力が読み込まれているファイル名を与える.
DirectoryNameと
ToFileNameを使って,関連する他のファイル名を指定することができる.
| $Input | 入力が現在読み込まれているファイルまたはストリームの名前 |
Mathematica で読み込み中のファイルの参照法