python用pickle存储变量的问题

用下面的函数存储一个列表,列表的每个元素为一个字符串,调用后存的文件为一个未知格式的文件,这该怎么办
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 方法来读取这个文本文件,并将每行作为一个字符串读取到列表中。

  • 建议你看下这篇博客👉 :python pickle 模块的使用以及2种典型报错处理
  • 除此之外, 这篇博客: python代码报错汇总中的 8、为什么不推荐使用pickle 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • pickle 仅被推荐作为短期的存储格式。问题在于 pickle 很难确保格式的长期有效性;一个今天被 pickle 化的对象可能明天会因为库的新版本而无法反序列化。所以我遇到.pkl文件老是出问题😂,不喜欢pickle哈哈