我可以在Python 2.7中递归使用%s
吗?我试过(Python新手提醒!)
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'
但局部变量ver
和wdir
会正确打印出来。我是否会收到此错误,因为我尝试递归使用%s
或者这个(尝试过的)代码出现了其他问题?
答案 0 :(得分:5)
你没有在这里递归地使用任何,你只是嵌套表达式(很好)。
您的问题是您在%
电话之外离开了第一个 Submit()
运算符。您不是将它应用于字符串,而是应用于返回值,Submit()
返回None
。将其移到括号内:
spss.Submit('SAVE OUTFILE = "%s".' %
os.path.join(wdir, "PrepareTableScript_%s.sav" % str(ver).zfill(2))
)
答案 1 :(得分:3)
你有这个:
spss.Submit('SAVE OUTFILE = "%s".') % os.path.join(...)
应该是这样的:
spss.Submit('SAVE OUTFILE = "%s".' % os.path.join(...))