所以我发现了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.
答案 0 :(得分:1)
对于可以用Python,R或Java编写的扩展,您需要创建一个包含命令名,任何子命令以及所需参数和参数类型的语法规范。这是一张照片的开头(SPSSINC_TURF,随统计信息一起安装)。
这将指导Statistics解析器检查用户输入。然后它还使用包含用户输入的复杂结构调用Run函数。您可以使用扩展模块中的函数将其映射到Python变量并进行进一步验证。下面是SPSSINC TURF的Run函数开始的图片。
最后,如果语法有效,则Run函数调用worker函数执行一些有用的操作,通过调用
将所有参数映射到指定的参数 processcmd(oobj,args,superturf,vardict = spssaux.VariableDict())
这是从extensions.py。
查看帮助系统中的扩展文档,并查看一些与Statistics一起安装的扩展示例。
最后,这是我的一个演示文稿的幻灯片,总结了从用户输入到结果的流程。