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

Add new entry to existing csv with csv writer

遇到一个非常简单的问题。但无法弄清楚我的错误。我想将在特定时间间隔内更新的值列表 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
...

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

这应该可以正常工作:

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])

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

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

运行

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