How to | Wolfram言語でファイル名を入力し構築する方法

Wolfram言語は,ファイルにアクセスして使用するための簡単で一貫した方法を提供する.使用しているオペレーションシステムに特有のファイルパスを挿入するだけでなく,Wolfram言語では異なるオペレーションシステム間で移植できるディレクトリとファイルパスをプログラム的に構築することもできる.

Wolframシステムではディレクトリやファイルパスを,直接入力したり,挿入 ファイルパスのメニュー項目を使ったり,キー入力で修正されたドラッグアンドドロップを使ったりして挿入することができる.これらの方法についての詳細は,「ファイルパスを挿入する方法」を参照のこと.

FileNameJoinを使って完全なファイルパスを構築したり,FileNameSplitでファイルパスをその個々の構成要素に分割したりすることもできる.

これらの関数を使うプログラムはどれも,現行のオペレーティングシステムに適したパス名セパレータおよびその他の既約を使用するようになるため,異なるオペレーションシステム間でも移植可能である.

ファイル名の操作にStringSplitあるいはStringJoinを使った場合には,プログラムを実行したいオペレーションシステムそれぞれに対して,パス名セパレータとその他のファイル名規約を手作業で置き換える必要がある.

FileNameJoinを使ってWindowsの仮想ファイルのパスを構築する:

In[1]:=
Click for copyable input
Out[1]=

同じ操作をMacintoshで行う:

In[2]:=
Click for copyable input
Out[2]=

FileNameJoinは,パス名セパレータを含むファイルパスにも使える:

In[3]:=
Click for copyable input
In[4]:=
Click for copyable input
Out[4]=

FileNameJoinはディレクトリにも使えるので,ファイルを提供する必要はない:

In[5]:=
Click for copyable input
Out[5]=

FileNameJoinは,特定のディレクトリを表すWolfram言語のシステム変数に基づくファイル名やパスを構築する場合に大変便利である.

FileNameJoin$UserBaseDirectoryと使って,カーネルのinit.mファイルのファイルパスを構築する:

In[6]:=
Click for copyable input
Out[6]=

FileNameJoin$HomeDirectoryと使って,手作業で入力されたファイルパスを構築する:

In[7]:=
Click for copyable input
Out[7]=

ディレクトリを表すWolfram言語のシステム変数としてよく使われるその他のものには,$BaseDirectory$RootDirectory$HomeDirectory$InstallationDirectoryがある.

FileNameSplitは,基本的にFileNameJoinとは逆の操作を行うものである.

FileNameSplitを使って,ファイルパスをその構成要素に分割する:

In[8]:=
Click for copyable input
Out[8]=

FileNameSplitを使って,$UserBaseDirectoryをその構成要素に分割する.このリストの最初の要素は空の文字列である.これは,$UserBaseDirectoryがファイル名セパレータで始まることを示している:

In[9]:=
Click for copyable input
Out[9]=
In[10]:=
Click for copyable input
Out[10]=

Partの簡略形)を使って,ディレクトリの最初の4つの構成要素を得る:

In[11]:=
Click for copyable input
Out[11]=

FileNameJoinを直前の出力を指定する「」と一緒に使い,これらの構成要素からディレクトリパスを構築する:

In[12]:=
Click for copyable input
Out[12]=

FileNameDropを使って,同じパスを構築することもできる:

In[13]:=
Click for copyable input
Out[13]=
In[14]:=
Click for copyable input
Out[14]=

FileNameDropを使い,$UserBaseDirectoryの最後3つのディレクトリを削除することによって,パスを構築する:

In[15]:=
Click for copyable input
Out[15]=