仅当我运行同一代码两次时,SPSS语法中的Python循环错误

仅当我运行同一代码两次时,SPSS语法中的Python循环错误,python,spss,Python,Spss,我对python编程相当陌生 我正在尝试使用一个循环和一些python代码在SPSS中使用python自动化一些制表(我有点管理它…),但它在我第一次运行语法时工作正常,第二次只制表一次: 我有一个包含合并在一起的不同项目(即不同国家)的SPSS文件,因此首先我尝试使用内置函数提取项目列表。 一旦我有了我的项目列表,我就会运行一个循环,并更改spss的语法来进行案例选择和制表 代码如下: begin program. import spss #Function that extracts th

我对python编程相当陌生

我正在尝试使用一个循环和一些python代码在SPSS中使用python自动化一些制表(我有点管理它…),但它在我第一次运行语法时工作正常,第二次只制表一次:

我有一个包含合并在一起的不同项目(即不同国家)的SPSS文件,因此首先我尝试使用内置函数提取项目列表。 一旦我有了我的项目列表,我就会运行一个循环,并更改spss的语法来进行案例选择和制表

代码如下:

begin program.
import spss

#Function that extracts the data from spss
def DatiDaSPSS(vars, num):
  if num == 0:
    num = spss.GetCaseCount()
  if vars == None:
    varNums = range(spss.GetVariableCount())
  else:
    allvars = [spss.GetVariableName(i) for i in range(spss.GetVariableCount())]
    varNums = [allvars.index(i) for i in vars]
  data = spss.Cursor(varNums)
  pydata = data.fetchmany(num)
  data.close()
  return pydata

#store the result of the function into a list: 
all_prj=DatiDaSPSS(vars=["Project"],num=0)

#remove duplicates and keep only the country that i need:
prj_list=list(set([i[0] for i in all_prj]))


#loop for the tabulation:       
for i in range(len(prj_list)):
    prj_now=str(prj_list[i])

    spss.Submit("""

    compute filter_$=Project='%s'.
    filter by filter_$.
    exe.

    TEXT "Country"
    /OUTLINE HEADING="%s" TITLE="Country".

    CTABLES
      /VLABELS VARIABLES=HisInterviewer HisResult DISPLAY=DEFAULT
      /TABLE HisInterviewer [C][COUNT F40.0, ROWPCT.COUNT PCT40.1] BY HisResult [C]
      /CATEGORIES VARIABLES=HisInterviewer HisResult ORDER=A KEY=VALUE EMPTY=EXCLUDE TOTAL=YES 
        POSITION=AFTER
      /CRITERIA CILEVEL=95. 
    """ %(prj_now,prj_now))
end program.
当我第二次运行它时,它只显示列表的最后一个值(并且只显示一个表格)。如果我重新启动SPSS,第一次就可以正常工作

是因为它的功能吗


我正在使用spss25

我可以自己回复吗?我应该编辑讨论还是删除它?我想我找到了原因,我猜函数只会拾取已经选择的值,我现在尝试在开始之前添加此SPSS代码,它似乎正在工作:

use all.
exe.
begin program.
...
在最后一个循环中,数据上有一个过滤器,我在运行脚本之前删除了它。如果要我编辑或删除此邮件,请告诉我