编辑词典并将其保存在另一个 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 连接到它。
有人可以帮我怎么做吗?
编辑:
- file1.py 可以保存为任何其他格式,如 .json 或 .txt。我只是假设将数据保存为单独文件中的字典可以轻松更新。
- file1.py 必须是一个单独的文件,它是一个配置文件,所以我不想将它合并到我的主文件中。
- 上面提到的data for dict2来自socket connection at
dict2 = json.loads(data)
- 我想用来自套接字连接的数据更新 *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.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
文件。
如果您试图将词典打印回文件,您可以使用类似...
outFile = open("file1.py","w")
outFile.writeline("dict1 = " % (str(dict2)))
outFile.close()
您最好拥有一个 json 文件,然后从文件加载对象并将对象值写回文件。你可以让他们操作内存中的 json 对象,并简单地序列化它。
Z
最后,正如@Zaren 所建议的,我在 python 文件中使用了 json 文件而不是字典。
这是我所做的:
将file1.py修改为file1.json并以适当的格式存储数据。
来自file2.py,我在需要的时候打开了file1.json而不是import file1
并在 file1.json
上使用了 json.dump
& json.load
我有 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 连接到它。
有人可以帮我怎么做吗?
编辑:
- file1.py 可以保存为任何其他格式,如 .json 或 .txt。我只是假设将数据保存为单独文件中的字典可以轻松更新。
- file1.py 必须是一个单独的文件,它是一个配置文件,所以我不想将它合并到我的主文件中。
- 上面提到的data for dict2来自socket connection at
dict2 = json.loads(data)
- 我想用来自套接字连接的数据更新 *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.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
文件。
如果您试图将词典打印回文件,您可以使用类似...
outFile = open("file1.py","w")
outFile.writeline("dict1 = " % (str(dict2)))
outFile.close()
您最好拥有一个 json 文件,然后从文件加载对象并将对象值写回文件。你可以让他们操作内存中的 json 对象,并简单地序列化它。
Z
最后,正如@Zaren 所建议的,我在 python 文件中使用了 json 文件而不是字典。
这是我所做的:
将file1.py修改为file1.json并以适当的格式存储数据。
来自file2.py,我在需要的时候打开了file1.json而不是
import file1
并在 file1.json 上使用了
json.dump
& json.load