Syntax SPSS语法-使用文件的路径

Syntax SPSS语法-使用文件的路径,syntax,path,spss,Syntax,Path,Spss,我有一堆SPSS数据和语法文件,我每天都在移动,更改文件夹。但是,相对路径保持不变。 有没有办法利用这个事实? e、 g:使用INCLUDE命令并引用语法文件,该文件总是向上一个路径级别;或者使用GET打开一个位于上两层的文件 在谷歌上搜索,我找到了一些对HOST命令的引用,但我并没有完全使它起作用 如有任何意见,将不胜感激:) 提前多谢了您可以使用python获得SPSS语法的相对路径(只要保存了) SpssClient.GetDesignatedSyntaxDoc().GetDocument

我有一堆SPSS数据和语法文件,我每天都在移动,更改文件夹。但是,相对路径保持不变。 有没有办法利用这个事实? e、 g:使用INCLUDE命令并引用语法文件,该文件总是向上一个路径级别;或者使用GET打开一个位于上两层的文件

在谷歌上搜索,我找到了一些对HOST命令的引用,但我并没有完全使它起作用

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


提前多谢了

您可以使用python获得SPSS语法的相对路径(只要保存了)

SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()
然后,您可以使用pythons的
os
module(或其他)导航到所需的任何文件夹。下面是一个检索语法的保存文件位置的示例,然后是接下来的两个级别。它还返回一个宏,其中包含存储为字符串的相关文件夹路径,以便以后可以在SPSS命令(如GET、INCLUDE和其他)中使用这些路径

实现这一点的一种简洁方法是将其全部封装在一个小文档中,从而避免在所有语法中使用这个样板文件

要做到这一点,只需将上述代码在
BEGIN PROGRAM
/
END PROGRAM
之间复制到一个函数
Run(args)
到一个名为
SET\u JOB\u CWD.py的python文件中即可。此处指定给文件的名称是相关的,稍后将用于调用此扩展名命令

因此
SET\u JOB\u 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 extpath。
在SPSS语法中,“extpath EXTENSIONS”显示的位置就是此文件夹

现在,只要您在SPSS中保存了语法,您只需运行
设置作业CWD.
,它就会返回SPSS宏
!synPathL0U
!synPathL1U
!synPathL2U
,其中包含存储为字符串的相关文件夹位置。

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

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

在v21-22中,您需要从SPSS社区网站安装此软件。如果需要,可以获得更多详细信息


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

非常感谢您的回复,我明白了一般的想法。不过有个小问题:看起来我没有安装Python插件,这是运行代码所必需的…:(您使用的是哪个版本的SPSS?我使用的是版本21;根据[IBM],它应该包含在安装介质中,但我没有管理员权限:)在安装SPSS时,可能会选择不安装python插件。但它可以进行相应的安装。我建议您获得它的许可,以便能够这样做,这样您可以更轻松、更高效地完成SPSS任务,就像您尝试使用相对路径一样。是的,我必须与管理员讨论这一点。无论如何,非常感谢!
<Command xmlns="http://xml.spss.com/extension" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" Name="SET JOB CWD" Language="Python">
</Command>