将输出从python写入csv文件时出错

时间:2018-04-17 03:35:40

标签: python csv

我应该生成一个包含10列(从A到J)的csv文件,其中10000行包含1到1000之间的随机数。我能够获得所需的输出,但无法将此输出写入csv文件。请在下面找到我的代码和生成的错误消息。

import random
import csv

with open('table.csv', 'w') as file:
    csv_write = csv.writer(file,delimiter="\t")

    for i in range(ord('A'), ord('J')+1):
        csv_write.writerow(chr(i), end="\t")

    for j in range(1,11):
        for k in range(1,1001):
            csv_write.writerow(random.randint(1,10001), end="\t")

错误消息

Traceback (most recent call last):
  File "C:\Users\rida_\Desktop\tables.py", line 8, in <module>
    csv_write.writerow(chr(i), end="\t")
TypeError: writerow() takes no keyword arguments

2 个答案:

答案 0 :(得分:1)

看起来像writenow只将字符串作为arg,没有别的。

https://docs.python.org/2/library/csv.html#csv.csvwriter.writerow

如果您希望最后\t,请执行chr(i)+'\t'。 Char只会转换一个字符。我想你正在寻找str(i)+'\t'

所以,

csv_write.writerow(str(i)+'\t')

并且

csv_write.writerow(str(random.randint(1,10001))+'\t'

当你在创建csv_write时指定了分隔符\t时,我认为它会以\t结束行,所以你不需要将它追加到最后。可能要尝试一下。

答案 1 :(得分:0)

根据此document,当您打开CSV文件进行写入时,您将提供delimiterquotechar以及其他工作人员,因此在您的情况下,您无需通过{ {1}}到end="\t"。这个方法只给出了一个列表来写入你的文件。祝你好运。