Search code examples
pythonfiledictionaryfileupdate

Edit & save dictionary in another python file


I have 2 python files, file1.py has only 1 dictionary and I would like to read & write to that dictionary from file2.py. Both files are in same directory.

I'm able to read from it using import file1 but how do I write to that file.

Snippet:

file1.py (nothing additional in file1, apart from following data)

dict1 = {
        'a' : 1,      # value is integer
        'b' : '5xy',   # value is string
        'c' : '10xy',
        'd' : '1xy',
        'e' : 10,
        }

file2.py

    import file1
    import json

    print file1.dict1['a']    #this works fine
    print file1.dict1['b']

    # Now I want to update the value of a & b, something like this:

    dict2 = json.loads(data)
    file1.dict1['a'] = dict2.['some_int']     #int value
    file1.dict1['b'] = dict2.['some_str']     #string value

The main reason why I'm using dictionary and not text file, is because the new values to be updated come from a json data and converting it to a dictionary is simpler saving me from string parsing each time I want to update the dict1.

Problem is, When I update the value from dict2, I want those value to be written to dict1 in file1

Also, the code runs on a Raspberry Pi and I've SSH into it using Ubuntu machine.

Can someone please help me how to do this?

EDIT:

  1. file1.py could be saved in any other format like .json or .txt. It was just my assumption that saving data as a dictionary in separate file would allow easy update.
  2. file1.py has to be a separate file, it is a configuration file so I don't want to merge it to my main file.
  3. The data for dict2 mention above comes from socket connection at

dict2 = json.loads(data)

  1. I want to update the *file1** with the data that comes from socket connection.

Solution

  • If you are attempting to print the dictionary back to the file, you could use something like...

    outFile = open("file1.py","w")
    outFile.writeline("dict1 = " % (str(dict2)))
    outFile.close()
    

    You might be better off having a json file, then loading the object from and writing the object value back to a file. You could them manipulate the json object in memory, and serialize it simply.

    Z