当这些(我的(假设得到满足时,我不明白为什么我会从下面的代码中得到错误。
假设是:
- 'rb'="读取字节"=正在以字节形式读取文件
- loads=以字节加载=文件以字节加载(实际上这个可能是错误的(
首先,我试图将腌制的数据写入一个文件:
import pickle
variables = {
1:['enable_family_chng', '0'],
2:['enable_genus_chng', '0'],
3:['enable_species_chng', '0'],
4:['new_family_name', '0'],
5:['new_genus_name', '0'],
6:['new_species_name', '0'],
}
#if species change is true then also enable add map or just open folder
# define dictionary varaibles
# just set all the variables[n][1] to 1
# better way to write this?... I think so! jst nt yt
variables[1]=['enable_family',{enable_family_chng}]
variables[2]=['enable_genus_chng',{enable_genus_chng}]
variables[3]=['enable_species_chng',{enable_species_chng}]
variables[4]=['new_family_name',{new_family_name}]
variables[5]=['new_genus_name',{new_genus_name}]
variables[6]=['new_species_name',{new_species_name}]
with open("variables.pickle", "wb") as file:
pickle.dumps(variables)
然后我试着从文件中读出来。我试过的一件事是
import pickle
with open("variables.pickle", "rb") as file:
pickle.loads('variables.pickle' 'rb')
返回错误
TypeError:需要类似字节的对象,而不是"str">
我尝试过的两件事
import pickle
with open("variables.pickle", "r") as file:
pickle.load('variables.pickle' 'r')
返回错误
TypeError:文件必须具有"read"one_answers"readline"属性
如果您想pickle到文件中,然后取消pickle,则需要使用.dump()
/.load()
,而不是.dumps()
/loads()
,后者正在向字符串转储数据/从中读取数据(因此是末尾的s
(。尝试:
import pickle
variables = {
1:['enable_family_chng', '0'],
2:['enable_genus_chng', '0'],
3:['enable_species_chng', '0'],
4:['new_family_name', '0'],
5:['new_genus_name', '0'],
6:['new_species_name', '0'],
}
with open("variables.pickle", "wb") as file:
pickle.dump(variables, file)
with open("variables.pickle", "rb") as file:
read_variables = pickle.load(file)
print(variables == read_variables)