python json文件太大_python - python json.dump创建的文件太大 - 堆栈内存溢出

所以我有这个CSV文件,大小为380 MB左右。 我为此创建了一个空数据结构:{ID1 {day1:[[flow,hour1],[flow,hour2] ... [flow,hour23]],day2:[...] ... day30:[ ...]},ID2 ...}。 我从csv中提取内容,并在下面的循环中填充了此结构,这大约需要3分钟。 每30天,每24小时大约有2000个ID。 然后,当我尝试将此填充的结构转储到json文件中时,花费了数小时,并且输出文件的大小超过了3 GB,然后我退出了脚本。 由于JSON应该更紧凑,这是否应该发生? 因为我尝试使用较小的比例尺(1000个条目)并且效果很好。 有解决这个问题的好方法吗? 谢谢。

注意:'stations'是row ['ID']也应匹配的站点列表。

import csv

import json, pprint, datetime, time

meta_f = open( metadata_path , 'rb' )

meta_read = csv.DictReader(meta_f,delimiter='\t')

hour_f = open(hourly_path,'r')

hour_read = csv.DictReader(hour_f, delimiter=',')

stations = []

no_coords = []

for i,row in enumerate(meta_read):

if not row['Longitude'] or not row['Latitude']:

no_coords.append(row['ID'])

elif in_box(row,bound):

stations.append(row['ID'])

data={}

number_of_days=30

days={}

for i in range(1,number_of_days+1):

days[i]=[]

for station in stations:

data[int(station)]=days

with open('E:/pythonxy/Projects/UP/json_data.txt','wb') as f:

json.dump({},f)

f.close()

with open('E:/pythonxy/Projects/UP/json_data.txt','rb') as f:

d=json.load(f)

#i=0

t0=time.time()

for row in hour_read:

#if i>1000:

#break

if row['Station'] in stations:

#print row['Station']

t=datetime.datetime.strptime(row['TimeStamp'], '%m/%d/%Y %H:%M:%S')

data[int(row['Station'])][int(t.day)]+=[[row['TotalFlow'],t.hour]]

#i+=1

#print i

d.update(data)

print time.time()-t0

t0=time.time()

with open('E:/pythonxy/Projects/UP/json_data.txt','wb') as f:

json.dump(d,f)

f.close()

print time.time()-t0

print 'DONE'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值