如何使用for循环在新行上书写?

时间:2019-07-01 14:04:22

标签: python python-3.x csv for-loop

我正在设置一个脚本,我需要为for循环的每个增量写上一行。

此刻,我先写头,然后在下一行写,但是每次递增都会擦除我的行以写新数据。

headers = [['Name', 'Age']]
for i in range(10):
   line = [[str(name), str(age)]]
   with open('myfile.csv', 'w', newline="") as f:
       writer = csv.writer(f, delimiter=';')
       writer.writerows(headers)
       writer.writerows(line)
       writer.writerows('\n')

我正在尝试用writer.writerows('\n')设置下一行,但是没有用。

我认为第二行总是被覆盖,但是我不知道如何使用我的循环跳到下一行。预先感谢。

2 个答案:

答案 0 :(得分:2)

您以相反的方式放置代码:

每次循环执行时,您打开文件进行写入(不追加),每次再次写入标头并仅写入一行。

顾名思义,

writerows写完整行,因此不需要换行。并且它写入row_s_,因此您必须使用[[]]制作标题和行。使用writerow来写一个。

headers = ['Name', 'Age']
with open('myfile.csv', 'w', newline="") as f:
    writer = csv.writer(f, delimiter=';')
    writer.writerow(headers)
    for i in range(10):
        line = [str(name), str(age)]
        writer.writerow(line)

为什么您的writer.writerows('\n')无法正常工作?因为如上所述,它是row_s_,因此它期望可迭代。它可以作为writer.writerows(['\n'])(做成一个单元素列表)或writer.writerow('\n')(行而不是行)来工作。

答案 1 :(得分:0)

您应该只打开文件一次,然后使用循环。

headers = [['Name', 'Age']]
with open('myfile.csv', 'w', newline="") as f:
    writer = csv.writer(f, delimiter=';')
    writer.writerows(headers) #I assume you want the header only once
    for i in range(10):
       line = [[str(name), str(age)]]
       writer.writerows(line)
       writer.writerows('\n')