在Python中,如果某个函数没有返回就结束了,则假定它为returnNone
。您的numbersOut()
功能没有return
任何作用。所以,当你写
out.writerow(numbersOut())
你最终打电话来out.writerow(None)
。这将给您看到的错误,因为None
它不是一个序列,并且csv
模块不知道如何将其写None
为一行CSV数据。
我想你会过更好的声明numbersOut
采取out
作为参数:
def numbersOut(out):
for i in range (1, 1001):
out.writerow("%s" % (i+1, ))
out.writerow("\n")
然后使用
numbersOut(out)
我建议您进行其他几处更改。
如果只想向一行写入一个值,请替换该行
out.writerow("%s" % (i+1, ))
与
out.writerow(["%s" % (i+1, )])
(请注意已插入[
和]
)。writerow
取一个值序列并将每个值写到一个单独的逗号分隔的单元格中。如果传递单个字符串,则该字符串将被解释为字符序列,并且每个字符最终都位于其自己的单元格中。
其次,我建议删除该行out.writerow("\n")
。当您使用编写一行时writerow
,csv
模块将为您输出行尾。您无需手动结束行。实际上,该行out.writerow("\n")
最终在包含数字的每一行之间写入一个包含换行符的单元格。