SPSS 语法 - 使用文件的路径

SPSS syntax - use path of the file

我有一堆 SPSS 数据和语法文件,每天都在四处移动,更改文件夹。但是,相对路径保持不变。 有没有办法利用这个事实? 例如:使用 INCLUDE 命令并引用一个语法文件,该文件始终是一个路径级别;或使用 GET 打开一个文件,位于 UP

两层

谷歌搜索我发现了一些对 HOST 命令的引用,但我没有完全让它工作。

如有任何意见,我们将不胜感激:)

非常感谢

您可以使用python获取SPSS语法的相对路径(前提是已保存)。

SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()

从这里您可以使用 pythons' os 模块(或其他方式)导航到您想要的文件夹。下面是检索语法的保存文件位置以及接下来的两个级别的示例。它还 return 是一个宏,其中包含存储为字符串的相关文件夹路径,以便以后可以在 SPSS 命令(例如 GET、INCLUDE 等)中使用它们。

* Run this in any saved SPSS syntax to test *.
begin program.
import spss,spssaux,SpssClient, os
SpssClient.StartClient() 
synPathL0U = os.path.dirname(SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()) 
SpssClient.StopClient()
synPathL1U=os.path.dirname(synPathL0U)
synPathL2U=os.path.dirname(synPathL1U)
print "synPathL0U =",synPathL0U
print "synPathL1U =",synPathL1U
print "synPathL2U =",synPathL2U
spss.SetMacroValue("!synPathL0U",spssaux._smartquote(synPathL0U+"\"))
spss.SetMacroValue("!synPathL1U",spssaux._smartquote(synPathL1U+"\"))
spss.SetMacroValue("!synPathL2U",spssaux._smartquote(synPathL2U+"\"))
end program.

/* Check results - Echo should relay back the desired folder paths */.
echo !synPathL0U.
echo !synPathL1U.
echo !synPathL2U.

一种巧妙的实现方式,将其全部封装在一个小 custom extension command 中,从而避免在所有语法中出现这种样板文件。

要做到这一点很容易,只需将上面的代码在 BEGIN PROGRAM / END PROGRAM 之间复制到一个函数 Run(args) 中,再到一个名为 python 的文件中,例如 SET_JOB_CWD.py。此处分配给文件的名称是相关的,稍后将用于调用此扩展命令。

所以 SET_JOB_CWD.py 将包含:

def Run(args):
   import spss,spssaux,SpssClient, os
   SpssClient.StartClient() 
   synPathL0U = os.path.dirname(SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()) 
   SpssClient.StopClient()
   synPathL1U=os.path.dirname(synPathL0U)
   synPathL2U=os.path.dirname(synPathL1U)
   spss.SetMacroValue("!synPathL0U",spssaux._smartquote(synPathL0U+"\"))
   spss.SetMacroValue("!synPathL1U",spssaux._smartquote(synPathL1U+"\"))
   spss.SetMacroValue("!synPathL2U",spssaux._smartquote(synPathL2U+"\"))

然后还创建一个相应的 SET_JOB_CWD.xml 文件,其中包含以下代码:

<Command xmlns="http://xml.spss.com/extension" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="SET JOB CWD" Language="Python">
</Command>

这两个文件应该保存在你的扩展文件路由到的任何地方(要知道这个文件夹位置 运行 SHOW EXTPATHS. 在 SPSS 语法中, "EXTPATHS EXTENSIONS" 显示的位置是这个文件夹。

现在,只要您在 SPSS 中保存了语法。您可以简单地 运行 SET JOB CWD. 并且它将 return SPSS 宏 !synPathL0U!synPathL1U!synPathL2U 包含存储为字符串的相关文件夹位置。

在 v21 中,(免费)Python 插件需要单独下载。它完全集成在 v22 中。

借助 Python 和 R Essentials,您可以获得一堆像本机命令一样工作的扩展命令,包括对话框界面。您可能会发现有用的一个是 STATS OPEN PROJECT。它允许您定义一个项目或一组相关项目,并在启动时或调用命令时自动加载或执行辅助文件。

在 v21-22 中,您需要从 SPSS Community 网站安装它。如果需要,可提供更多详细信息。

顺便说一句,我会避免使用 INCLUDE 命令。使用较新的 INSERT 命令。它可以为您做一些目录技巧。