我在Raspberry Pi上运行Python 3.9.2,并编写了一个脚本,用于读取锅炉的水温并将其写入CSV文件,但是,输出文件中的每个数据项都显示在新的一行中。
下面是我的代码:
from subprocess import check_output
import csv
header = ['Flow', 'Return']
cmd = ["/usr/bin/ebusctl", "read", "-f"]
data = [
[float(check_output([*cmd, "FlowTemp", "temp"]))],
[float(check_output([*cmd, "ReturnTemp", "temp"]))]
]
with open('sandbox.csv', 'w', encoding='utf8', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(data)
下面是sandbox.csv的内容:
Flow,Return
57.19
43.12
我该怎么解决这个问题?
1条答案
按热度按时间ktca8awb1#
CSV文件每行包含一条 * 记录 *。
writerow
方法将一个记录写入文件,该文件期望被表示为值 * 的一个列表或元组 *,例如,对于一个记录a, b, c
:writerows
方法一次对多个记录进行相同的操作,它期望将这些记录表示为记录 * 的列表或元组 *,例如,对于两个记录a, b, c
和x, y, z
:传递给
writerows
的数据的结构如下:这意味着
writerows
将向文件中写入两条记录(每条记录占一行),每条记录仅包含一个值。如果您希望
Flow, Return
是 * 一个 * 记录(写入一行),则需要对数据进行不同的结构化:data = [Flow, Return]
(单个记录)并将其传递给writerow
。data = [[Flow, Return]]
(记录列表,只包含一条记录)并将其传递给writerows
。