我目前正在处理多个文件,并希望写入csv。我在for循环中打开它们,并根据文件中的信息进行计算。我想把所有这些数据写入一个csv文件。
我的for循环中有以下代码:
header = ['cost', 'tax', 'percentage_of_pay']
data = [price, taxes, pay_percentage]
with open('Sales-and-cost.csv', 'a+') as f:
writer=csv.writer(f, delimiter='t', lineterminator='n')
writer.writerow([header])
writer.writerow([data])
然而,它在每次运行文件时都会将头信息放进去,看起来像这样:
成本 | 税收 | 支付百分比|
---|---|---|
---- | ---- | ------------------ |
成本 | 税 | percentage_of_pay |
--- | --- | ------------------ |
成本 | 税 | 支付百分比|
--- | --- | ------------------ |
您的代码有两个问题,第一个问题是data
是一个列表,但您将其包含在另一个列表中,即[header]
与[['cost', 'tax', 'percentage_of_pay']]
相同,后者是一个清单列表。
第二,你通常会先写标题,然后在循环中写数据,每个数据行一个
你可能想要这样的东西:
with open('Sales-and-cost.csv', 'w') as f:
writer=csv.writer(f, delimiter='t', lineterminator='n')
writer.writerow(header)
for row in rows:
writer.writerow(row)
其中,行是包含输出数据的列表列表,即
rows = [[price_1, taxes_1, pay_percentage_1],[price_2, taxes_2, pay_percentage_2],[price_3, taxes_3, pay_percentage_3]]