我试图写一个.csv文件3个变量:日期,最小,最高温度。由于我不想重复导入等,因此我将tmax和tmin替换为数字。
这是我的代码:
import json
import datetime
import time
import csv
import sys
tmin = float(30.3333)
tmax = float(31.4444)
from datetime import datetime
i = datetime.now()
todayD = i.strftime('%Y/%m/%d')
minmax = [todayD, tmin, tmax]
with open("C:/Users/anderstn/Desktop/JsonToCsv/"+today+"_MinMax"+".csv", 'w', newline='') as e:
dict_writer = csv.DictWriter(e, fieldnames=["Date", "Min Temp", "Max Temp"])
dict_writer.writeheader()
dict_writer.writerows(todayD, tmin, tmax)
我也尝试了几次迭代:
dict_writer.writerows(todayD: tmin: tmax)
dict_writer.writerows(todayD | tmin | tmax)
dict_writer.writerows(minmax)
通常错误如下:
Traceback (most recent call last):
File "C:/Users/anderstn/Desktop/JsonToCsv/JsonImport.py", line 42, in <module>
dict_writer.writerows(todayD, tmin, tmax)
TypeError: writerows() takes 2 positional arguments but 4 were given
干杯,
答案 0 :(得分:1)
首先,你不需要将花车投射到花车上,只需写下
即可tmin = 30.3333
tmax = 31.4444
DictWriter
适用于词典(dict
及其子类),writerows
也适用于词典的列表(或其他可迭代),在我们的例子中writerow
方法就足够了,所以我们需要将字典传递给writerow
,而不是list
实例。
最后你的样本可能看起来像这样
import csv
from datetime import datetime
tmin = 30.3333
tmax = 31.4444
i = datetime.now()
todayD = i.strftime('%Y/%m/%d')
minmax = [todayD, tmin, tmax]
fields_names = ["Date", "Min Temp", "Max Temp"]
# here we making dictionary from `minmax`
# because `DictWriter` works with dictionaries
data = dict(zip(fields_names, minmax))
# FIXME: here is the problem with name `today`, it is our `todayD` or something else?
with open("C:/Users/anderstn/Desktop/JsonToCsv/" + today + "_MinMax" + ".csv",
'w', newline='') as e:
dict_writer = csv.DictWriter(e,
fieldnames=fields_names)
dict_writer.writeheader()
dict_writer.writerow(data)
答案 1 :(得分:0)
writerows()需要一个iterable,每行包含一个对象。每行应该是一个列表。 writerow()还期望一个interable,每列包含一个对象。 e.g。
dict_writer.writerow([todayD,tmin,tmax])
答案 2 :(得分:0)
方法ExecutionContext
需要词典列表,因此您必须将todayD,tmin,tmax放入字典中,并使用创建DictWriter.writerows()
时使用的键,然后把这本字典放在一个列表中。
另外,如果您只想写今天D,tmin,tmax,您可以使用csv.DictWriter
连续写一个单字典。
答案 3 :(得分:0)
来自: - Sijan Bhandari
todayD = i.strftime('%Y/%m/%d')
minmax = {}
minmax['Date'] = todayD
minmax['Min Temp'] = tmin
minmax['Max Temp'] = tmax
with open("C:/Users/anderstn/Desktop/JsonToCsv/"+today+"_MinMax"+".csv", 'w', newline='') as e:
dict_writer = csv.DictWriter(e, fieldnames=["Date", "Min Temp", "Max Temp"])
dict_writer.writeheader()
dict_writer.writerow(minmax)
干杯,