为了处理文件,我使用了8388608(16x0x800000
hex)的块大小结束。然后,我处理了循环中已读取的行,并保留了已处理行数和已丢弃行数。在每个处理功能中,我将数字添加到总数中,以便可以跟踪已处理的记录总数。
这似乎是它需要走的路。
下次问类似这样的问题时,请强调必须指定较大的块大小,而不是原始答案中所示的2048。
循环去
first = Truefor data in self.json_parse(inf): records = len(data['MainKey']) columns = len(data['MainKey'][0]['Fields']) if first: # Initialize output as DictWriter ofile, outf, fields = self.init_csv(csvname, data, records, columns) first = False reccount, errcount = self.parse_records(outf, data, fields, records)
在解析例程中
for rec in range(records): currec = data['MainKey'][rec] # If each column count can be different columns = len(currec['Fields']) retval, valrec = self.build_csv_row(currec, columns, fields)
要解析列,请使用
for col in columns: dataname = currec['Fields'][col]['name'] dataval = currec['Fields'][col]['Values']['value']
因此,参考现在可以正常工作,并且处理已正确处理。大块显然允许处理足够快以处理数据,同时又足够小而不会导致系统过载。



