在SP中使用Python循环保存Outfile

2024-09-19 23:21:20 发布

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

好吧,我一直在用python和spss来实现我想要的。我可以打开文件并进行更改,但是在保存文件(以及那些更改)时遇到问题。我所拥有的(仅使用schoollist中的一所学校):

begin program.
import spss, spssaux
import os
schoollist = ['brow']
for x in schoollist:
   school = 'brow'
   school2 = school + '06.sav'
   filename = os.path.join("Y:\...\Data", school2) #In this instance, Y:\...\Data\brow06.sav
   spssaux.OpenDataFile(filename)

   #--This block are the changes and not particularly relevant to the question--#
   cur=spss.Cursor(accessType='w')
   cur.SetVarNameAndType(['name'],[8])
   cur.CommitDictionary()
   for i in range(cur.GetCaseCount()):
      cur.fetchone()
      cur.SetValueChar('name', school)
      cur.CommitCase()
   cur.close()

   #-- What am I doing wrong here? --#
   spss.Submit("save outfile = filename".)

end program.

关于如何让save outfile与循环一起工作有什么建议吗?谢谢。干杯


Tags: 文件inimportforosfilenameprogramsav
2条回答

我不熟悉spssaux.OpenDataFile,并且找不到任何关于它的文档(除了在unicode模式下使用SPSS数据文件的参考)。但我要猜测的是,问题是它获取SPSS数据文件以在Python程序块中使用,但实际上它没有打开以进一步提交命令。在

这里我做了一个测试用例,它不是使用spssaux.OpenDataFile来获取文件,而是使用SPSS命令来完成这一切,只需通过python插入必要的部分。所以首先让我们创建一些假数据来处理。在

*Prepping the example data files.
FILE HANDLE save /NAME = 'C:\Users\andrew.wheeler\Desktop\TestPython'.
DATA LIST FREE / A .
BEGIN DATA
1
2
3
END DATA.

SAVE OUTFILE = "save\Test1.sav".
SAVE OUTFILE = "save\Test2.sav".
SAVE OUTFILE = "save\Test3.sav".
DATASET CLOSE ALL.

现在这里是一个代码正在执行的成对向下版本。我插入了LIST ALL.命令,这样您就可以检查输出,它是否正在将感兴趣的变量添加到文件中。在

^{pr2}$

在save调用中,不能将filename解析为其实际值。应该是这样的: spss.提交(“”“保存输出文件=“%s”。”“%filename)”

相关问题 更多 >