使用python

时间:2017-01-22 08:39:56

标签: python spss

所以我发现了SPSS的python扩展,一切正常,我现在已经创建了一些脚本,并将它们包含在扩展图中,并且工作正常。但是,现在我已经创建了几个需要参数的脚本,我想我可以按照相同的方法但我猜不是。

def Run(args):
    import spss
    def testing_p(variables):
        all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
        variable_nr = [all_variables.index(i) for i in variables]

        print all_variables
        print variable_nr

使用以下.xml文件:

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

但是,这会在调用testing_p时引发错误([&#39; my_var&#39;,&#39; my_var2&#39;]):

Warnings
This command should specify a valid subcommand at the beginning.
Execution of this command stops.

我无法解决这个问题,因为当没有放入扩展地图并且只执行以下操作时一切正常:

BEGIN PROGRAM.
import spss
def testing_p(variables):
   all_variables = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
   variable_nr = [all_variables.index(i) for i in variables]

   print all_variables
   print variable_nr
END PROGRAM.

1 个答案:

答案 0 :(得分:1)

对于可以用Python,R或Java编写的扩展,您需要创建一个包含命令名,任何子命令以及所需参数和参数类型的语法规范。这是一张照片的开头(SPSSINC_TURF,随统计信息一起安装)。 enter image description here

这将指导Statistics解析器检查用户输入。然后它还使用包含用户输入的复杂结构调用Run函数。您可以使用扩展模块中的函数将其映射到Python变量并进行进一步验证。下面是SPSSINC TURF的Run函数开始的图片。

enter image description here

最后,如果语法有效,则Run函数调用worker函数执行一些有用的操作,通过调用

将所有参数映射到指定的参数

processcmd(oobj,args,superturf,vardict = spssaux.VariableDict())
这是从extensions.py。

导入的

查看帮助系统中的扩展文档,并查看一些与Statistics一起安装的扩展示例。

最后,这是我的一个演示文稿的幻灯片,总结了从用户输入到结果的流程。

enter image description here