2016-08-01 70 views
0

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

我可以使用导入文件1来读取它,但是如何写入该文件。

段:

file1.py(没有附加在文件1,除了以下数据)

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的价值,我想被写在文件1

另外要dict1那些价值,代码运行在树莓派,我已经使用SSH连接它使用Ubuntu机。

有人可以帮助我如何做到这一点?

编辑:

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

dict2 = json.loads(data)

插座连接
  • 我想更新* file1的**与数据来自套接字连接。
  • +0

    使用json.dump & json.load你为什么不把数据写入这两个文件读取的JSON?据我可以告诉你,从一个python文件编辑另一个文件不会获得任何好处,这看起来真的没有必要。 – SAMO

    回答

    1

    如果你正试图打印字典回原来的文件,你可以使用类似...

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

    你可能会更好有一个JSON文件,然后从加载对象和写作对象值返回到一个文件。你可以让他们操纵内存中的json对象,并简单地对其进行序列化。

    ž

    +0

    谢谢Zaren,因为你建议我将数据存储到json文件中,而不是python文件中的字典。它使我的工作变得更简单。 – keyur

    0

    你应该用咸菜库来保存和载入字典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" } 
    
    +0

    感谢James,我研究了pickle,如果我必须始终写一个完整的字典,这将会非常有用。但就我而言,我不确定是否必须编写1个或全部值。 – keyur

    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成存储在一个filepath.json文件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文件。

    +0

    **我想更改file1 **中的值,这就是我的问题所在。 – keyur

    0

    最后为@Zaren建议,我用了一个JSON文件,而不是字典中的Python文件。

    这里就是我所做的:

    1. 修改file1.pyfile1.json和数据用适当的格式存储。

    2. file2.py,我需要的不是import file1当打开file1.jsonfile1.json

    相关问题