【问题标题】:How to write a new row in an existing csv file without appending it in the last line?如何在现有 csv 文件中写入新行而不将其附加到最后一行?
【发布时间】:2019-10-17 15:34:46
【问题描述】:

我想在 python 中的现有 .csv 文件中添加一个新行。

我尝试通过在 windows 中的 spyder IDE 中的 csv 文件中附加一行来尝试以下操作。

def write_to_file():

file = open('E:/Python/Sample//Dataset.csv','a')   
file.write(",".join([str(newID),request.form['username'],request.form['age']]))

file.close()

我希望新值出现在新行中。但它在最后一行附加了新值。

如果我添加名称“Erick”和年龄“60”,输出如下图所示。

但我希望得到类似下面的结果。

【问题讨论】:

标签: python python-3.x csv


【解决方案1】:

您所做的是正确的,但您假设文件已经以换行符结尾

您需要在写完每一行之前和/或之后放置file.write("\n")

【讨论】:

  • 请注意,如果您的文件已经以换行符结尾,那么您不应该再写一个。否则,你会有空行......在这种情况下,使用 CSV 作为“数据库替换”不是一个好主意
【解决方案2】:

更简单的版本是:

import csv

row =['Eric', '60']

with open('people.csv','a') as csvFile:   #a to append to existing csv file
    writer = csv.writer(csvFile)
    csvFile.write("\n")    #write your data to new line
    writer.writerow(row)
csvFile.close()

输出(假设您的 csv 没有在新行结束):

请注意(如果您的 csv 以换行符结尾)输出将有额外的空间:

【讨论】:

  • 我查过了。它工作正常,并没有增加额外的空间。
  • 注意前面的“之前”图像有 3 行,而后面的“之前”文本有 4 行。如果您的 csv 以换行符结束,它将添加空格
猜你喜欢
  • 2021-03-22
  • 1970-01-01
  • 2016-06-27
  • 2012-01-05
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2019-01-09
相关资源
最近更新 更多