Search code examples
pythonjsonraspberry-picgi

Python writing to file and json returns None/null instead of value


I'm trying to write data to a file with the following code

#!/usr/bin/python37all
print('Content-type: text/html\n\n')
import cgi
from Alarm import *
import json

htmldata = cgi.FieldStorage()
alarm_time = htmldata.getvalue('alarm_time')
alarm_date = htmldata.getvalue('alarm_date')
print(alarm_time,alarm_date)
data = {'time':alarm_time,'date':alarm_date}
# print(data['time'],data['date'])

with open('alarm_data.txt','w') as f:
    json.dump(data,f)
...

but when opening the the file, I get the following output: {'time':null,'date':null}

The print statement returns what I except it to: 14:26 2020-12-12. I've tried this same method with f.write() but it returns both values as None. This is being run on a raspberry pi. Why aren't the correct values being written?

--EDIT-- The json string I expect to see is the following:{'time':'14:26','date':'2020-12-12'}


Solution

  • Perhaps you meant:

    data = {'time':str(alarm_time), 'date':str(alarm_date)}
    

    I would expect to see your file contents like this:

    {"time":"14:26","date":"2020-12-12"}
    

    Note the double quotes: ". json is very strict about these things, so don't fool yourself into having single quotes ' in a file and expecting json to parse it.