用下面的函数存储一个列表,列表的每个元素为一个字符串,调用后存的文件为一个未知格式的文件,这该怎么办
def save_variable(v, filename):
f = open(filename, 'wb')
pickle.dump(v, f)
f.close()
return filename
基于new Bing 和ChatGPT的回答:
如果您使用 pickle 序列化 Python 对象并将其保存到文件中,那么默认情况下生成的文件将是二进制文件,文件格式不是常见的文本文件格式。如果您不知道文件的格式,可以尝试打开文件并查看文件头部信息来确定文件类型。
对于 pickle 序列化的对象,您可以使用以下方法来反序列化并还原为 Python 对象:
import pickle
def load_variable(filename):
with open(filename, 'rb') as f:
v = pickle.load(f)
return v
然后,您可以使用 load_variable 函数从文件中加载序列化的对象,并将其还原为 Python 对象。如果文件不是二进制文件,而是文本文件,您可以使用 open 函数的不同模式来打开文件,如下所示:
def save_variable(v, filename):
with open(filename, 'w') as f:
for item in v:
f.write("%s\n" % item)
return filename
这个函数将列表中的每个元素写入文件中,并将它们分行写入。您可以使用 readlines 方法来读取这个文本文件,并将每行作为一个字符串读取到列表中。
pickle 仅被推荐作为短期的存储格式。问题在于 pickle 很难确保格式的长期有效性;一个今天被 pickle 化的对象可能明天会因为库的新版本而无法反序列化。所以我遇到.pkl文件老是出问题😂,不喜欢pickle哈哈