编辑&将字典保存在另一个python文件中

时间:2016-08-01 19:40:19

标签: python file dictionary fileupdate

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

我可以使用导入文件1 从中读取,但如何写入该文件。

段:

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. 上面提到的 dict2 数据来自
  4. 的套接字连接

    dict2 = json.loads(data)

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

4 个答案:

答案 0 :(得分:1)

如果您尝试将字典打印回文件,则可以使用类似......

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

最好使用json文件,然后从中加载对象并将对象值写回文件。你可以在内存中操作json对象,并简单地序列化它。

ž

答案 1 :(得分:0)

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

以下是泡菜的基本用法

   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" }

答案 2 :(得分:0)

我认为您希望将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转储到json文件中,该文件存储在filepath.json

然后,在你的第二个档案中:

<强> 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文件。

答案 3 :(得分:0)

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

这就是我的所作所为:

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

  2. file2.py ,我在需要时打开了 file1.json ,而不是import file1并使用了json.dump&amp; file1.json

  3. 上的json.load