SPSS语法之外的Python函数

2024-05-19 16:35:39 发布

您现在位置:Python中文网/ 问答频道 /正文


我试图用Python删除一些SPSS多响应集。 以下内容保存在SPSS语法中,只要我在“中有集合的名称,它就可以工作。”列表.txt“文件(在语法目录中):

begin program.
import spss, spssaux, SpssClient, os, sys
SpssClient.StartClient() 
working_directory_path = os.path.dirname(SpssClient.GetDesignatedSyntaxDoc().GetDocumentPath()) 
SpssClient.StopClient()
def delete_function(dir_path, filename):
    path_file = str(dir_path) + "\\" + filename
    print path_file
    with open(path_file) as f:
        result = ["$" + x.replace('\n',"") for x in f.readlines()]
    names = [x for x in spss.GetMultiResponseSetNames()]
    for i in result:
        if i in names:
            spss.Submit('MRSETS /DELETE NAME=[{}].'.format(unicode(i, "utf-8")))
    print(spss.GetMultiResponseSetNames())
delete_function(working_directory_path, 'list.txt')
end program.

但是当我把函数移到语法之外(在一个单独的函数.py“文件),我做不到。
有什么想法吗?在


Tags: 文件pathintxtforos语法program
2条回答

与SPSS一起安装的Python应该在SPSS环境中工作,即从SPSS语法运行的Python代码。我知道这对你很有效。在

如果您将代码移到SPSS环境之外,某些代码行就没有意义了。例如,BEGIN PROGRAM/END PROGRAM是SPSS命令,而不是Python命令。告诉他们之间有Python代码。它们对Python来说毫无意义。在

{{sps2>可能无法使用Python{cd3>安装,这取决于Python{cd3>是否可以独立运行。它们没有绑定到标准的Python库中,它们只与SPSS Python一起提供。在

此外,在您的代码中:

  • 您引用的是一个SPSS语法,当您从SPSS外部运行它时,它可能没有打开
  • 您试图运行一些SPSS语法代码(spss.Submit),这可能再次导致错误

你的想法之所以有问题,可能还有十几个原因:)

底线:你不能只从SPSS中取出代码并运行到python中。你必须知道你在做什么。在

您可以将python函数放入单独的脚本中,然后将它们导入SPSS,如下所示:

begin program. 

import sys
sys.path.append("C:\SomeDirectory") # directory containing the function.py file

import spss 
import function

function.delete_function(working_directory_path, 'list.txt')

end program. 

现在可以调用函数,而不必在SPSS语法中定义它。注意,像上面这样导入的,在模块名后面调用函数“function.delete_函数()”

我不确定这是您想要的还是您想从外部pythonide运行脚本。如果是这样,这可能会帮助您:

https://www.ibm.com/support/knowledgecenter/en/SSLVMB_22.0.0/com.ibm.spss.statistics.python.help/spss/programmability_option/python_package_xdrives.htm

相关问题 更多 >