Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
_csv.Error:应为序列[Python]_Python_Csv - Fatal编程技术网

_csv.Error:应为序列[Python]

_csv.Error:应为序列[Python],python,csv,Python,Csv,以下是我的全部代码: 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(csvnam

以下是我的全部代码:

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,等等)。通过使用range,我成功地将它们全部放在一行上,但这不是我需要的

然而,当我尝试使用我的函数时,我不断地得到一个错误。我不确定这是我如何调用它的问题,还是函数本身的问题

有什么想法吗?如果有什么需要澄清的,请询问;我有一个不太明白的习惯

提前谢谢

编辑:根据请求进行回溯:

Traceback (most recent call last):
  File "writer.py", line 14, in <module>
   out.writerow(numbersOut())
_csv.Error: sequence expected
回溯(最近一次呼叫最后一次):
文件“writer.py”,第14行,在
out.writerow(numbersOut())
_csv.错误:应为序列
以下工作:

import csv

def numbersOut():
    for i in range (1, 1001):
        seq=[i,i,i,i]
        out.writerow(seq)
        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()]) # writerow() expects a sequence a list or a tuple.  

在Python中,如果函数从末尾掉下来而没有返回,则假定它返回
None
。您的
numbersOut()
函数不会
返回任何内容。所以,当你写作的时候

out.writerow(numbersOut())
您最终调用了
out.writerow(无)
。这将显示您看到的错误,因为
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, ))

(注意插入的
[
]
)。
writerow
获取一系列值,并将每个值写入一个单独的逗号分隔单元格。如果传递一个字符串,它将被解释为一个字符序列,并且每个字符都会在其自己的单元格中结束


其次,我建议将行
移出.writerow(“\n”)
。当您使用
writerow
写入行时,
csv
模块将为您输出行尾。您不需要手动结束这些行。事实上,行
out.writerow(“\n”)
最后写入一个单元格,在每行之间包含一个包含数字的换行符。

如果您发布回溯,也可能会有所帮助。
        out.writerow(["%s" % (i+1, )])