【发布时间】:2012-12-21 09:03:23
【问题描述】:
我正在使用 SPSS 19 并且想获取当前工作目录以使用 INSERT 命令来调用其他语法文件。 有人知道怎么做吗?似乎有一个 Python 命令(SpssClient.GetCurrentDirectory()),但它返回一个乱码错误代码(我喜欢这堆叫做 SPSS 的废话......)
【问题讨论】:
标签: spss
我正在使用 SPSS 19 并且想获取当前工作目录以使用 INSERT 命令来调用其他语法文件。 有人知道怎么做吗?似乎有一个 Python 命令(SpssClient.GetCurrentDirectory()),但它返回一个乱码错误代码(我喜欢这堆叫做 SPSS 的废话......)
【问题讨论】:
标签: spss
经过一番谷歌搜索,我找到了一种工作方法:
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 然后加载数据集,那就太好了-它仍将指向其无法写入的主目录。SPSS 19 行为...)
【讨论】:
您可以像这样使用可编程 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, 乔恩·派克
【讨论】:
我已经能够让 SPSS 18 将启动它的目录设置为默认目录。选择编辑 > 选项 > 文件位置。在数据文件和其他文件框中输入单个句点。每当您通过单击数据或语法文件启动 SPSS 时,它将默认为当前目录,即启动它的目录。适用于 SPSS18,ymmv 与其他版本。
顺便说一句,同样的技巧适用于 Excel,但我还没有找到任何其他适用的应用程序。在我看来,这是程序应该工作的方式,而不是强迫你进入你不想要的目录。
【讨论】:
在 SPSS V23 中尝试
CWD.
SHOW DIRECTORY.
如果无法识别命令 CWD,请下载/安装 CWD(“当前工作目录”)扩展。选择 Utilities > Extension Bundles > Download and Install Extension Bundles,然后搜索 CWD。p>
【讨论】: