SPSS 19を使用していますが、現在の作業ディレクトリでINSERTコマンドを使用して、追加の構文ファイルを呼び出したいと考えています。誰かがそれを行う方法を知っていますか?Pythonコマンド(SpssClient.GetCurrentDirectory())があるようですが、それはぎこちないエラーコードを返します(私はSPSSと呼ばれるこのがらくたの山が大好きです...)
4 に答える
スクリプトAPIを使用する代わりに、このようなプログラマビリティAPIを使用できます。
begin program.
import spss, spssaux
workingdir = spssaux.getShow("DIRECTORY")
spss.Submit("""FILE HANDLE cwd /NAME="%s".""" % workingdir)
end program.
これは、という名前のファイルハンドルを定義しますcwd
。
INSERT
また、バックエンドの作業ディレクトリをで指定された場所に変更するCD
キーワードがあることにも注意してくださいFILE
。
HTH、ジョンペック
いくつかのグーグルの後、私は実用的な方法を見つけました:
BEGIN PROGRAM.
import spss
import SpssClient
CONST_FHandleName = 'CurrentDir'
#SpssClient.StartClient() /stop nötig, sonst gibt es Probleme mit dem zugriff auf SPSS
try:
SpssClient.StartClient()
syntaxpath =SpssClient.GetDesignatedSyntaxDoc()
currentdir = os.path.dirname(syntaxpath.GetDocumentPath())
FHandle="File handle " + CONST_FHandleName + " /name='" + currentdir + "'"
finally:
SpssClient.StopClient()
print "The FHandle Dir is now: " + currentdir
print "The FHandle Dir is now: " + FHandle
spss.Submit(FHandle)
END PROGRAM.
このプログラムは、現在のSyntax-Fileのディレクトリを取得し、そのディレクトリをファイルハンドルとして設定します。もちろん、これは実際の作業ディレクトリではありませんが、私にとってはうまくいく近似値です。
注意:
spss.getworkingdirectoryは、アクティブなデータセットのフォルダーではなく、明らかに最初の起動フォルダーを返します(SPSSを最初に起動してからデータセットをロードした場合は、書き込みができないホームディレクトリを指します。SPSS19の動作... )。
SPSS 18を取得して、起動したディレクトリをデフォルトのディレクトリとして設定することができました。[編集]>[オプション]>[ファイルの場所]を選択します。データファイルおよびその他のファイルボックスに、単一のピリオドを入力します。データまたは構文ファイルをクリックしてSPSSを起動すると、デフォルトで現在のディレクトリ、つまり起動したディレクトリになります。SPSS18、ymmvおよび他のバージョンで動作します。
ちなみに、同じトリックがExcelでも機能しますが、機能する他のアプリケーションは見つかりませんでした。私の意見では、これは、不要なディレクトリに強制的に移動するのではなく、プログラムが機能する方法です。
SPSSV23で試してください
CWD.
SHOW DIRECTORY.
コマンドCWDが認識されない場合は、CWD(「現在の作業ディレクトリ」)拡張機能をダウンロード/インストールします。[ユーティリティ]>[拡張バンドル]>[拡張バンドルのダウンロードとインストール]を選択し、CWDを検索します。