遇到了一个非常简单的问题。但无法弄清楚我的错误。我想将在特定时间间隔内更新的值列表 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
...
猜猜我在这里遗漏了一些非常明显的东西......
答案 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' 将继续添加到该文件中。