Reputation: 551
i have json file of the following format:
{"CustomerNo": "858017D", "SalesOrder": "ERI2380", "Brand": "HONAC", "Item": "HL10CESWB", "Qty": "1", "Month": "6","time": "2018-06-19T16:28:58Z"}
{"CustomerNo": "072881D", "SalesOrder": "W619091", "Brand": "HONAC", "Item": "MO10CESWK", "Qty": "-1", "Month": "6","time": "2018-06-08T12:36:29Z"}
{"CustomerNo": "072881D", "SalesOrder": "W642501", "Brand": "HONAC", "Item": "MO08CESWK", "Qty": "1", "Month": "6", "time": "2018-06-19T08:20:51Z"}
{"CustomerNo": "072866D", "SalesOrder": "W645370", "Brand": "HONAC", "Item": "MN10CESBB", "Qty": "1", "Month": "6", "time": "2018-06-19T16:36:22Z"}
Need to append to an existing file which has data in a similar format. But the resulting file is getting all messed up. I need append this file several times a day. The code looks like:
csvfile1 = open('daily.csv', 'r')
jsonfile1 = open('test3.json', 'a')
fieldnames = list(raw_data.columns.values)
reader1 = csv.DictReader( csvfile1, fieldnames)
next(reader1)
jsonfile1.write('\n')
pos = next1 = 0
for row in reader1:
pos = next1
next1 += len(row) # compute position of beginning of next line
json.dump(row, jsonfile1)
jsonfile1.write('\n')
jsonfile1.truncate(pos)
The final output is not exactly the append. It is some malformed file with incomplete json objects.
Upvotes: 0
Views: 2061
Reputation: 475
Consider closing files when you're finished (or use with-as). Also not sure why you calculate position to truncate (on 'a' mode) at the end of appending.
import csv
import json
fieldnames = ("CustomerNo", "SalesOrder", "Brand", "Item", "Qty", "Month", "time")
# Handle the case when there is no newline at the end. Format a file before appending.
with open('daily.csv', 'r') as csvfile1:
with open('test3.json', 'a') as jsonfile1:
for row in csv.DictReader(csvfile1, fieldnames):
json.dump(row, jsonfile1)
jsonfile1.write('\n')
Upvotes: 1