4

我正在使用 SPSS 19 并且想获取当前工作目录以使用 INSERT 命令来调用其他语法文件。有人知道怎么做吗?似乎有一个 Python 命令(SpssClient.GetCurrentDirectory()),但它返回一个乱码错误代码(我喜欢这堆叫做 SPSS 的废话......)

4

4 回答 4

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,乔恩·派克

于 2013-01-08T15:10:24.363 回答
3

After some googling I found a working method:

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.

This program will get the directory of the current Syntax-File and set the directory as a file handle. Of course, this is not the real working directory, but a approximation that works for me.

Caution:

spss.getworkingdirectory returns apparently the first startup folder - NOT the folder of the active dataset (great if you startet SPSS first and then loaded the dataset - it will still point to its home directory, where it cannot write. SPSS 19 behaviour...)

于 2013-01-08T10:19:44.887 回答
2

我已经能够让 SPSS 18 将它启动的目录设置为默认目录。选择编辑 > 选项 > 文件位置。在数据文件和其他文件框中输入单个句点。每当您通过单击数据或语法文件启动 SPSS 时,它将默认为当前目录,即启动它的目录。适用于 SPSS18、ymmv 和其他版本。

顺便说一句,同样的技巧适用于 Excel,但我还没有找到任何其他适用的应用程序。在我看来,这是程序应该工作的方式,而不是强迫你进入一些你不想要的目录。

于 2013-04-30T18:53:24.930 回答
2

在 SPSS V23 中尝试

CWD.
SHOW DIRECTORY.

如果无法识别命令 CWD,请下载/安装 CWD(“当前工作目录”)扩展。选择实用程序 > 扩展包 > 下载并安装扩展包,然后搜索 CWD。

于 2016-07-28T20:40:21.203 回答