ファイルとフォルダの参照
SenseTalkは、ファイルやファイルシステムを操作するためのいくつかの方法を提供しています。ここで説明するコマンドと関数を使用して、ファイルやファイルシステムの情報にアクセスしたり、作業ディレクトリを決定したり変更したり、パスやディレクトリについての詳細を確認したりできます。また、ファイルサイズや割り当てられた権限など、個々のファイルのプロパティにもアクセスすることができます。
ファイルやファイルシステムオブジェクトを操作するためのSenseTalkのコマンドと関数は、テスト対象のシステム(SUT)ではなく、ローカルマシンで動作します。
以下の例では、SenseTalkを使用してファイルやファイルシステムの情報にどのようにアクセスするかを示しています。ファイルの作成や削除、ファイルへの書き込み、ファイルやファイルシステムオブジェクトの変更方法については、ファイルとフォルダの相互作用を参照してください。
ベストプラクティスとして、SenseTalkスクリプト内で参照されるすべてのファイルは、スイートウィンドウ内のリソースペインを通じてEggplant Functionalに追加するべきです。この方法は、指定されたスイートのスイートディレクトリ内のリソースディレクトリにファイルを保存します。SenseTalkはローカルファイルシステム上の他の場所に保存されたファイルにアクセスすることができますが、リソースディレクトリを使用すると追加の機能が提供されます。詳細については、リソースペインを参照してください。
スクリプト内でファイルを参照する
type code
スクリプト内でファイルを参照するには、単に file という単語に続けてファイルの名前となる式を使用します。 folder という単語を file の代わりに使用することて、同様にフォルダを参照することもできます。
the availableStringEncodings
the availableStringEncodings
folder filePath
directory filePath
folderとdirectoryの単語はSenseTalkスクリプト内で交互に使用されます。スクリプト内でfolderの単語が使用されている場所で、代わりにdirectoryの単語を使用することができます。
_filePath_は、Mac/Linux形式またはWindows形式のパスのテキスト、またはパスの各コンポーネントが一つのアイテムであるリストとすることができます。
指定する名前は、ファイルまたはフォルダの完全な(絶対)パス名、または現在の作業フォルダに対する相対パスとすることができます( the folder グローバルプロパティを参照)。SenseTalkは、次のルールに従って、指定された名前に基づいてファイルの完全な"絶対"パス名を決定します:
- 名前がスラッシュ (/) で始まるか、パスリストの最初のアイテムが "/" であれば、それは既に絶対ファイル名です
- 名前がドライブレターとコロンに続くスラッシュ(例: "C:\")で始まるか、パスリストの最初のアイテムがドライブレターとコロンで、2番目のアイテムがスラッシュであれば、それは既に絶対ファイル名です
- 名前がチルダとスラッシュ (~/) で始まる場合、それはユーザーのホームフォルダに対する相対パスを表します
- 名前がチルダ (~) に続くユーザー名で始まる場合、それはその特定のユーザーのホームフォルダに対する相対パスを表します
- 名前がピリオドとスラッシュ (./) または二つのピリオドとスラッシュ (../) で始まる場合、それは現在の作業フォルダまたはその親フォルダからの相対パスを表します
- それ以外の場合、それは現在の作業フォルダ内のファイルまたはパスを表します
Behavior: filePath 関数は、ファイルパスを標準(Mac/Linux/web)フォーマットの文字列として返し、パスコンポーネント間のセパレータとしてスラッシュを使用します。windowsFilePath 関数は同様ですが、コンポーネント間のセパレータとしてバックスラッシュを使用して、ファイルパス文字列をWindowsフォーマットで返します。
例::
open file"/etc/passwd"
move file "runlog24" into folder "archivedLogs"
Folder, Directory 関数
Behavior: 指定したファイルパスの親フォルダを返します。
folder 関数(またはその同義語、directory)を使用して、指定したファイルまたはフォルダを含むフォルダへのパスを取得します。
返される値は、スラッシュで終わります。ただし、the folderNamesEndWithSlash グローバルプロパティが false に設定されている場合は除きます。スラッシュで終わることで、単にファイル名を追加するだけでフルパス名を作成することが容易になります。
構文:
{the} folder of filePath
folder( filePath )
指定された filePath(以下のSyntaxを参照)が絶対パスでない場合、それは現在の作業フォルダに対する相対パスとして扱われます。これは the folder グローバルプロパティで示されます。folder 関数は、fileDescription オブジェクト( files() や fileDescription() 関数の返り値など)またはスクリプトファイルオブジェクトを引数に呼び出すこともできます。これにより、指定されたファイルの親フォルダを取得します。
フォルダ関数によって返される値は、実際には fileDescription オブジェクトですが、ほとんどの目的では単に文字列として扱うことができます。その文字列値はフォルダへのフルパスです。
例:
put the folder of myFile into myFolder
put folder(someFile) & "siblingFileName" into newFile
LastPathComponent 関数
Behavior: ファイルシステムオブジェクトのローカル名を返し、親フォルダへのパスを除去します。
lastPathComponent 関数は、ファイルまたはフォルダのフルパス名がある場合に使用します。そして、フルパスなしで、ただローカル名を取得したい場合に使用します。
構文:
{the} lastPathComponent of filePath
lastPathComponent( filePath )
例:
put the lastPathComponent of fullPath into fileName
put lastPathComponent("/Users/jc/Documents/Jan24.data") -- "Jan24.data"
FileExtension 関数
Behavior: ファイル名からファイル拡張子を返します。
fileExtension 関数は、ファイルまたはフォルダのフルネームがある場合に使用します。そして、ただファイル拡張子を取得したい場合に使用します。拡張子は名前の最後のピリオド以降の部分です。ピリオドは返される拡張子には含まれません。
構文:
{the} fileExtension of fileName
fileExtension( fileName )
例:
put the fileExtension of fileName into extension
put fileExtension("/Users/jc/Documents/Jan24.data") -- "data"