我正在使用 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,乔恩·派克
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...)
我已经能够让 SPSS 18 将它启动的目录设置为默认目录。选择编辑 > 选项 > 文件位置。在数据文件和其他文件框中输入单个句点。每当您通过单击数据或语法文件启动 SPSS 时,它将默认为当前目录,即启动它的目录。适用于 SPSS18、ymmv 和其他版本。
顺便说一句,同样的技巧适用于 Excel,但我还没有找到任何其他适用的应用程序。在我看来,这是程序应该工作的方式,而不是强迫你进入一些你不想要的目录。
在 SPSS V23 中尝试
CWD.
SHOW DIRECTORY.
如果无法识别命令 CWD,请下载/安装 CWD(“当前工作目录”)扩展。选择实用程序 > 扩展包 > 下载并安装扩展包,然后搜索 CWD。