编辑词典并将其保存在另一个 python 文件中

Edit & save dictionary in another python file

我有 2 个 python 个文件,file1.py 只有 1 个字典,我想从 file2.py 读取和写入该字典。两个文件都在同一目录中。

我可以使用 import file1 读取它,但我该如何写入该文件。

片段:

file1.py(除了以下数据外,file1 中没有其他内容)

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

我使用字典而不是文本文件的主要原因是因为要更新的新值来自 json 数据并将其转换为字典更简单,使我免于解析每个字符串我想更新 dict1.

问题是,当我更新 dict2 的值时,我希望将这些值写入 file1 中的 dict1

此外,代码在 Raspberry Pi 上运行,我使用 Ubuntu 机器通过 SSH 连接到它。

有人可以帮我怎么做吗?

编辑:

  1. file1.py 可以保存为任何其他格式,如 .json 或 .txt。我只是假设将数据保存为单独文件中的字典可以轻松更新。
  2. file1.py 必须是一个单独的文件,它是一个配置文件,所以我不想将它合并到我的主文件中。
  3. 上面提到的data for dict2来自socket connection at

dict2 = json.loads(data)

  1. 我想用来自套接字连接的数据更新 *file1**。

你应该使用 pickle 库来保存和加载字典 https://wiki.python.org/moin/UsingPickle

这里是pickle的基本用法

   1 # Save a dictionary into a pickle file.
   2 import pickle
   3 
   4 favorite_color = { "lion": "yellow", "kitty": "red" }
   5 
   6 pickle.dump( favorite_color, open( "save.p", "wb" ) )



   1 # Load the dictionary back from the pickle file.
   2 import pickle
   3 
   4 favorite_color = pickle.load( open( "save.p", "rb" ) )
   5 # favorite_color is now { "lion": "yellow", "kitty": "red" }

我认为您想将 file1 中的数据保存到单独的 .json 文件中,然后在第二个文件中读取 .json 文件。您可以执行以下操作:

file1.py

import json
dict1 = {
        'a' : 1,      # value is integer
        'b' : '5xy',   # value is string
        'c' : '10xy',
        'd' : '1xy',
        'e' : 10,
        }
with open("filepath.json", "w+") as f:
    json.dump(dict1, f)

这会将字典 dict1 转储到存储在 filepath.jsonjson 文件中。

然后,在你的第二个文件中:

file2.py

import json

with open("pathname.json") as f:
    dict1 = json.load(f)

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

dict1['a'] = dict2['some_int']     #int value
dict1['b'] = dict2['some_str']     #string value

注意:这不会更改第一个文件中的值。但是,如果您需要访问更改后的值,您可以将数据 dump 放入另一个 json 文件,然后在需要数据时再次加载该 json 文件。

如果您试图将词典打印回文件,您可以使用类似...

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

您最好拥有一个 json 文件,然后从文件加载对象并将对象值写回文件。你可以让他们操作内存中的 json 对象,并简单地序列化它。

Z

最后,正如@Zaren 所建议的,我在 python 文件中使用了 json 文件而不是字典。

这是我所做的:

  1. file1.py修改为file1.json并以适当的格式存储数据。

  2. 来自file2.py,我在需要的时候打开了file1.json而不是import file1 并在 file1.json

  3. 上使用了 json.dump & json.load