使用 csv writer 向现有 csv 添加新条目

时间:2021-06-28 13:47:48

标签: python list csv delimiter

遇到了一个非常简单的问题。但无法弄清楚我的错误。我想将在特定时间间隔内更新的值列表 csv_line = ["name 1", "value 1", "name 2", "value 2",...] 保存为 csv 文件。我目前的方法(受此 post 启发)如下所示:

with open("live_data.csv", "a", newline="") as file:

    writer = csv.writer(file)
    writer.writerow(csv_line)
    file.close()

结果如下:

n
a
m
e

1

v
a
...

当我明确希望我的 csv 看起来像时:

entry1
entry2
...

猜猜我在这里遗漏了一些非常明显的东西......

2 个答案:

答案 0 :(得分:2)

运行

import csv

csv_line = ["name 1", "value 1", "name 2", "value 2"]
with open("live_data.csv", "a", newline="") as file:

    writer = csv.writer(file)
    writer.writerow(csv_line)

保存在 live_data.csv 中 name 1,value 1,name 2,value 2 我的理解是你打算完成什么。

编辑:我忘了提到使用 with 语句您不需要关闭文件 [1]


[1] https://docs.python.org/3/reference/compound_stmts.html#the-with-statement

答案 1 :(得分:1)

这应该按预期工作:

import csv

csv_line = ["name 1", "value 1", "name 2", "value 2"]

with open("live_data.csv", "w", newline="") as file:
    writer = csv.writer(file)
    for line in csv_line:
        writer.writerow([line])

使用 open 语法时,您不再需要关闭文件。另外,在使用 writerow 时,该函数需要一个列表输入,因此使用字符串作为输入会先将其转换为列表然后写入,从而获取不同列中的每个字母。

此外,根据您的用例,如果您只编写一次,您可以在 open() 中使用 'w' 作为选项。否则,保留 'a' 将继续添加到该文件中。