以下是我的全部代码:
import csv
def numbersOut():
for i in range (1, 1001):
out.writerow("%s" % (i+1, ))
out.writerow("\n")
csvname = raw_input("Enter desired filename: ")
headers = ["ID", "Student", "Grade"]
out = csv.writer(open(csvname + ".csv","w"), delimiter=',', lineterminator='\n', quoting=csv.QUOTE_ALL)
out.writerow(headers)
out.writerow(numbersOut())
抛出“sequence expected”错误的部分是第14行,即这一行:out.writerow(numbersOut())
基本上,我要做的是使用函数numbersOut()
在CSV文件中放置1000行,每个行都有自己的ID(行1(减去头)将=1,行2将=2,等等)。我设法用射程把它们排成一行,但那不是我需要的。
但是,当我试图使用我的函数时,总是会遇到一个错误。我不确定这是我如何调用它的问题,还是函数本身的问题。
有什么想法吗?如果有什么需要澄清的,请问我,我有一个不讲道理的习惯。
提前谢谢!
编辑:按要求回溯:
Traceback (most recent call last):
File "writer.py", line 14, in <module>
out.writerow(numbersOut())
_csv.Error: sequence expected
在Python中,如果一个函数从末尾掉下来而没有返回,则假定它返回
None
。你的numbersOut()
函数没有return
任何东西。所以,当你写你最后打电话给
out.writerow(None)
。这将给出您看到的错误,因为None
不是序列,csv
模块不知道如何将None
作为一行CSV数据写出。我认为最好声明
numbersOut
以out
作为参数:然后用
我建议你再做一些改变。
如果只想将单个值写入行,请替换该行
与
(注意插入的
[
和]
)。writerow
获取一系列值,并将每个值写出一个单独的逗号分隔的单元格。如果传递一个字符串,则该字符串将被解释为一个字符序列,并且每个字符都将在其自己的单元格中结束。其次,我建议删除行
out.writerow("\n")
。当您使用writerow
编写行时,csv
模块将为您输出行尾。你不需要手动结束这些行。实际上,行out.writerow("\n")
最后会在包含数字的每一行之间写入一个包含换行符的单元格。以下工作:
相关问题 更多 >
编程相关推荐