我有两个python文件,file1.py只有一个字典,我想读&从file2.py写入那个字典。两个文件都在同一目录中。
我可以使用importfile1读取它,但我该如何写入该文件。
代码段:
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
我使用dictionary而不是文本文件的主要原因是,要更新的新值来自json数据,将其转换为dictionary更简单,每次我想更新dict1时都不用进行字符串解析。
问题是,当我从dict2更新值时,我希望将这些值写入文件1中的dict1
此外,该代码在Raspberry Pi上运行,我使用Ubuntu机器对其进行了SSH访问。
有人能帮我怎么做吗?
编辑:
- file1.py可以保存为任何其他格式,如.json或.txt。我只是假设将数据作为字典保存在单独的文件中可以轻松更新
- file1.py必须是一个单独的文件,它是一个配置文件,所以我不想将它合并到我的主文件中
- 上面提到的dict2的数据来自
dict2 = json.loads(data)
- 我想用来自套接字连接的数据更新*file1**
如果您正试图将字典打印回文件,您可以使用类似。。。
outFile = open("file1.py","w")
outFile.writeline("dict1 = " % (str(dict2)))
outFile.close()
您最好有一个json文件,然后从中加载对象并将对象值写回文件。您可以让他们在内存中操作json对象,并简单地序列化它。
Z
我认为您希望将file1
中的数据保存到一个单独的.json
文件中,然后读取第二个文件中的.json
文件。以下是您可以做的:
文件1.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
文件中。
然后,在您的第二个文件中:
文件2.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
文件。
您应该使用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" }
最后,正如@Zaren所建议的,我在python文件中使用了json文件而不是dictionary。
以下是我所做的:
-
将file1.py修改为file1.json,并以适当的格式存储数据。
-
在file2.py中,我在需要时打开file1.json而不是
import file1
,并使用json.dump
&file1.json上的json.load