如何在现有 csv 文件中写入新行而不将其附加到最后一行?

Posted

技术标签:

【中文标题】如何在现有 csv 文件中写入新行而不将其附加到最后一行?【英文标题】:How to write a new row in an existing csv file without appending it in the last line? 【发布时间】: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”,输出如下图所示。

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

【问题讨论】:

为什么不能在行前写一个换行符? @cricket_007 抱歉。我想按顺序添加行。 append new row to old csv file python的可能重复 【参考方案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 以换行符结束,它将添加空格

以上是关于如何在现有 csv 文件中写入新行而不将其附加到最后一行?的主要内容,如果未能解决你的问题,请参考以下文章

我可以使用 Text::CSV_XS 解析 csv 格式的字符串而不将其写入磁盘吗?

如何播放音频样本而不将其写入文件?

如何在python中生成文件而不将其保存到磁盘?

如何将嵌入式资源作为字节数组读取而不将其写入磁盘?

如何在 MYSQL 中运行查询而不将其写入二进制日志

持久化实体而不将其附加到 EntityManager