How to write a dictionary into an existing file?

user300 picture user300 · Nov 24, 2013 · Viewed 57.4k times · Source

Let's say I have a dictionary and I want to write it into an existing file. How can I do so without losing anything that could potentially already exist in the file? What I was thinking of is doing the following:

def write_report(r, filename):
        input_filename=open(filename, "a")
        input_filename.close()
        for (k,v) in r.items():
               input_filename.write(k,v)
        return filename

what I want to make sure is that the filename correctly contains the dictionary.

Answer

Eugene Naydenov picture Eugene Naydenov · Nov 24, 2013

You can use json module to read and write data structures in JSON format (in other words serialize to JSON and deserialize from JSON). For example:

import json

# load from file:
with open('/path/to/my_file.json', 'r') as f:
    try:
        data = json.load(f)
    # if the file is empty the ValueError will be thrown
    except ValueError:
        data = {}

# save to file:
with open('/path/to/my_file.json', 'w') as f:
    data['new_key'] = [1, 2, 3]
    json.dump(data, f)