Python -- 如何将对象一起保存到二进制文件中?

1 投票
2 回答
1192 浏览
提问于 2025-04-17 01:26

我有一个 python 类,这个类里面包含了很多对象——有些是数据结构(比如 listsdicts 等等),还有一些是其他类的处理器(这些处理器里面也可能有其他数据结构……)。

我不想用 pickle 来保存整个类和它里面的所有内容,我想知道有没有办法只把我想要的几个对象的数据 serialize(序列化)一下,然后把它们(只有这些对象)保存到一个二进制文件里?

举个例子,假设我有以下两个 python 对象:

myList = [1, 2, 3, 4, 5]
myDict = {'a' : 14, 'b' : 5, 'c' : 65}

那么,保存这两个 python 对象的内容到一个 二进制文件 的最佳方法是什么呢?理想情况下,我希望把 这两个对象 都保存到同一个二进制文件里,并且能够在之后再加载这些数据。

2 个回答

1

在编程中,有时候我们需要处理一些数据,这些数据可能来自不同的地方,比如用户输入、文件或者网络请求。为了让程序能够理解这些数据,我们需要将它们转换成程序可以使用的格式。

这个过程就像是把一种语言翻译成另一种语言,让不同的系统能够交流。比如说,如果你有一个用户输入的字符串(就是一串字符),你可能需要把它转换成数字,这样程序才能进行计算。

在这个过程中,我们可能会遇到一些问题,比如数据格式不对,或者数据缺失。这就需要我们在处理数据的时候,做好错误处理,确保程序不会因为这些问题而崩溃。

总之,处理数据是编程中非常重要的一部分,我们需要学会如何将不同来源的数据转换成程序能够理解和使用的格式。

import pickle

imelda = ('More Mayhem', 
        'Imelda May', 
        '2011',
         ((1, 'Pulling the Rug')
         (2, 'Psycho'),
         (3, 'Mayhem'),
         (4, 'Kentish Town Waltz')))

with open("imelda.pickle", "wb") as pickle_file:
    pickle.dumps(imelda, pickle_file)
6

然后为它们创建一个容器类(或者用命名元组,或者普通元组,随你喜欢),再把它进行序列化处理(或者修改原来的类,只序列化你想要的部分)。pickle 就是序列化,它是Python中标准的处理方式。所以,除非你需要在不同语言之间更好地互通,通常就用这个就可以了。

撰写回答