python写入csv文件

python写入csv文件,python,csv,writing,Python,Csv,Writing,我有一个点Q元组,每次调用函数时都会创建它。如何将新的点Q写入csv文件,使第一列为x坐标,第二列为y坐标,第三列为z坐标,而不覆盖文件?。多谢各位 with open('points.csv', 'w') as csvfile: fieldnames = ['x', 'y','z'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) writer.writeheader() for val in q:

我有一个点Q元组,每次调用函数时都会创建它。如何将新的点Q写入csv文件,使第一列为x坐标,第二列为y坐标,第三列为z坐标,而不覆盖文件?。多谢各位

with open('points.csv', 'w') as csvfile:
    fieldnames = ['x', 'y','z']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()
    for val in q:
        writer.writerow({'x':q[0] , 'y': q[1], 'z': q[2]})

您必须更改打开文件的方式-模式w始终代表创建/截断文件。只需使用for append:

with open('points.csv', 'a') as csvfile:
     ...
当然,如果文件已经存在,那么您不想在每次重新打开时重新写入头文件-因此,您可以在打开文件之前验证文件是否存在:

import os
file_exists = os.path.exists("points.csv")
with ... as csvfile:
    writer = ...
    if not file_exists:
        writer.writeheader()
    ...

你的问题是什么?我现在换了职位。如果您想在文件中写入新行,请在打开文件时使用“a+”而不是“w”。太棒了,伙计,干杯