首页 > 解决方案 > 如何使用 for 循环在新行上书写?

问题描述

我正在设置一个脚本,我需要为我的 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')但它没有用。

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

标签: pythonpython-3.xcsvfor-loop

解决方案


你把你的代码反过来:

每次循环执行时,您都打开文件进行写入(而不是附加),每次再次写入标题并只写入一行。

writerows,顾名思义,写满行,所以不需要换行。它写的是 row_s_,所以你必须用[[and来制作标题和行]]。用来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')(行,而不是行)。


推荐阅读