我正在设置一个脚本,我需要为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')
设置下一行,但是没有用。
我认为第二行总是被覆盖,但是我不知道如何使用我的循环跳到下一行。预先感谢。
答案 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')