写入csv,3个变量

时间:2017-04-26 04:03:14

标签: python csv

我试图写一个.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

干杯,

4 个答案:

答案 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)

干杯,