2013-01-07 104 views
3

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

回答

3

与使用脚本API不同,您可以使用可编程API这样的程序。

开始程序。
进口SPSS,spssaux
工作目录= spssaux.getShow( “目录”)
spss.Submit( “” “FILE HANDLE CWD/NAME =” %S “ ”“” %工作目录)
端程序。

这定义了一个名为cwd的文件句柄。

还要注意,INSERT有一个CD关键字,用于将后端工作目录更改为FILE中指定的任何位置。

HTH, 乔恩·佩克

+0

我知道CD命令,但我的问题是找到一个有用的地方指向文件句柄。我不想硬编码这个路径... –

3

一些谷歌上搜索,我发现一个工作方法后:

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. 

该程序将获取当前语法文件的目录并将该目录设置为文件句柄。当然,这不是真正的工作目录,而是一个适合我的近似值。

注意:

spss.getworkingdirectory回报显然是第一个启动文件夹 - 不活动数据集的文件夹(伟大的,如果你startet SPSS,然后再加载数据集 - 它仍然会指向其主目录,其中它不能写入SPSS 19行为...)

2

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

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

+0

谢谢 - 这是一个巧妙的技巧! –

1

在SPSS V23尝试

CWD. 
SHOW DIRECTORY. 

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