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

ファイル名と検索

ファイル名の付け方は厳密にはコンピュータの機種によって異なる.しかし,Mathematica はすべてのシステムで機能するかなり汎用性のあるメカニズムを提供する.
「ファイルの検索とこれに関連した操作手順」で述べたように,Mathematica ではすべてのファイルはディレクトリの階層に分けられて保存されている.特定のファイルを探し出すには,Mathematica はそのファイル名と,それが属するディレクトリとを知らなければならない.
特定の時点では,ユーザは現ディレクトリ(current working directory)にいて,そこからの相対位置としてディレクトリを指定することができる.例えば,現ディレクトリにあるファイルには,ディレクトリの指定を省略して,単にファイル名を指定するだけでアクセスできる.
Directory[]現ディレクトリ
SetDirectory["dir"]dir を現ディレクトリに設定
ResetDirectory[]前のディレクトリに戻る

ディレクトリ操作

現ディレクトリを表示する.
In[1]:=
Click for copyable input
Out[1]=
サブディレクトリPackagesを現ディレクトリに設定する.
In[2]:=
Click for copyable input
Out[2]=
現ディレクトリが更新された.
In[3]:=
Click for copyable input
Out[3]=
前のディレクトリに戻る.
In[4]:=
Click for copyable input
Out[4]=
SetDirectoryを実行するとき,ディレクトリ名はオペレーティングシステムに合わせた形式で指定することができる.例えば,Unixシステムでは,ディレクトリの階層の1つ上のレベルのディレクトリは..で指定でき,ホームディレクトリは~で指定できる.
SetDirectoryで指定するディレクトリに移行するときはいつでも,Mathematica はそれまでにいたディレクトリを記憶しておく.ResetDirectoryによって,このディレクトリに戻ることができる.一般に,Mathematica はディレクトリのスタックをDirectoryStack[]に保存している.SetDirectoryを実行するたびに新たなディレクトリがこのスタックに追加され,ResetDirectoryを実行するたびに対応するディレクトリがスタックから削除される.
ParentDirectory[]現ディレクトリの親ディレクトリ
$InitialDirectoryMathematica が起動時の初期ディレクトリ
$HomeDirectoryホームディレクトリ(定義されているとき)
$BaseDirectoryMathematica がロードするシステム規模のファイルのためのベースディレクトリ
$UserBaseDirectoryMathematica がロードするユーザ独自のファイルのためのベースディレクトリ
$InstallationDirectoryインストールしたMathematica が置かれるトップレベルのディレクトリ

特別なディレクトリ

特定のファイルを指定すると,Mathematica はそのファイルをいくつかのステップで検索する.まず初めに,オペレーティングシステムまたはシェルに標準の様式を使う.
Mathematica は指定したファイル名をスキャンし,*$~?[",\ ,'等のメタ文字が含まれているかどうかを調べる.特殊文字が見付かれば,ファイル名全体をオペレーティングシステムまたはシェルに引き渡して解釈を促す.Unixシステムではname*$VAR 等は,この時点で展開される.しかし一般に,Mathematica はオペレーティングシステムまたはシェルが返す出力を取り,これをファイルのフルネームとみなす.
出力ファイルについては,これがMathematica の行う処理のすべてである.Mathematica が指定したファイルを見出せないときは,その名前のファイルを新たに作り出す.
ファイルから入力を得ようとする場合,Mathematica はさらに次の処理をする.実行しようとしている関数のオプションPathの値を参照し,それに指定された検索パスを探す.デフォルトでPathには大域変数$Pathが指定されている.
Get["file",Path->{"dir1","dir2",...}]
ディレクトリdiri から相対的に指定された位置にあるファイルを検索し読み込む
$Path入力ファイルの相対検索パス

ファイルの検索パス

一般に,大域変数$Pathにはディレクトリを表す文字列のリストが割り当てられている.入力ファイルを指定すると,Mathematica はこのリストに現れるディレクトリを順に現ディレクトリに移し,その中に要求されたファイルがあるかどうかを調べる.
$Pathの典型的な設定.現ディレクトリ(.)とホームディレクトリ(~)が初めに現れる.
In[5]:=
Click for copyable input
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を持つすべてのファイルのリスト.
In[6]:=
Click for copyable input
Out[6]=
現ディレクトリにあって,aで始まる名前を持つファイルと,サブディレクトリにあってPで始まる名前を持つファイル.
In[7]:=
Click for copyable input
Out[7]=
FileNamesはファイル名を表す文字列のリストを返す.現ディレクトリにないファイルを示すときは,現ディレクトリからの相対パスで表したファイル名となる.すべてのファイル名はそれが作られたコンピュータシステムにおけるフォーマットで与えられる.
DirectoryName["file"]ファイル名からディレクトリ名を抽出
ToFileName["directory","name"]ディレクトリ名とファイル名を組み合せて完全なファイル名を作る
ParentDirectory["directory"]ディレクトリの親ディレクトリ
ToFileName[{"dir1","dir2",...},"name"]
ディレクトリ名の階層から完全なファイル名を作る
ToFileName[{"dir1","dir2",...}]ディレクトリ名の階層からディレクトリの単一の名前を作る

ファイル名の操作

異なるコンピュータシステムでは異なる方法でファイル名が作られることに注意する.したがって,例えば,Windowsシステムではdir:\dir\dir\name の形の名前が使われ,Unixシステムではdir/dir/name の形の名前が使われる.関数ToFileNameは使っているコンピュータに合わせて適切なファイル名を作る.
ファイル名のディレクトリの部分を返す.
In[8]:=
Click for copyable input
Out[8]=
同じディレクトリの別のファイルの完全名を作る.
In[9]:=
Click for copyable input
Out[9]=
関連ファイルの組を作るに際して,1つのファイルを読むときに別のファイルを参照できるようにしておくと便利なことがある.大域変数$Inputはいま入力が読み込まれているファイル名を与える.DirectoryNameToFileNameを使って,関連する他のファイル名を指定することができる.
$Input入力が現在読み込まれているファイルまたはストリームの名前

Mathematica で読み込み中のファイルの参照法

Ask a question about this page  |  Suggest an improvement  |  Leave a message for the team