2013-03-06 109 views
0

我可以在Python 2.7中递归使用%s吗?我试过(Python的新手警惕!)我可以递归使用“%s”吗?

spss.Submit('SAVE OUTFILE = "%s".')%os.path.join(wdir,"PrepareTableScript_%s.sav"%str(ver).zfill(2)) 

,以便替换%s字符串中,还有另一种%s。我得到的错误是:

TypeError: unsupported operand type(s) for %: 'NoneType' and 'str'

但局部变量verwdir不正确打印出来。我是否得到这个错误,因为我试图递归地使用%s或者这个(尝试)代码有其他错误?

+0

简短的回答:是的!但更好的问题是,为什么没”你只是尝试一下吗?分解这个问题,我相信你可以弄明白。 – 2013-03-06 13:06:57

回答

5

你没有使用什么在这里递归,你只是嵌套表达式(这是很好)。

你的问题是,你离开第一个%运营商以外的Submit()调用。您不是将它应用于字符串,而是将其应用于返回值,并且Submit()返回None。移动它在括号内:

spss.Submit('SAVE OUTFILE = "%s".' % 
    os.path.join(wdir, "PrepareTableScript_%s.sav" % str(ver).zfill(2)) 
) 
+1

非常感谢!代码现在可以工作,我也明白什么是错的,为什么会出现这个错误! – RubenGeert 2013-03-06 13:13:02

3

你有这样的:

spss.Submit('SAVE OUTFILE = "%s".') % os.path.join(...) 

它应该是这样的:

spss.Submit('SAVE OUTFILE = "%s".' % os.path.join(...)) 
相关问题