python - 在循环中从 Python pickle 文件加载数据?

标签 python pickle

在一个小型数据采集项目中,我们使用 Python 的 pickle 来存储记录的数据,即对于每个“事件”,我们将其添加到输出文件 f

pkl.dump(event, f, pkl.HIGHEST_PROTOCOL)

其中 将 cPickle 导入为 pkl

在数据分析中,我们读取每个事件,但与普通文件相比,在普通文件中处理可以以一种相当优雅的方式进行:

with open(filename) as f:
    for line in f:
        do_something()

遍历 pickle 文件中的所有数据这变得有点尴尬:

with open(filename) as f:
    try:
        while True:
            event = pkl.load(f)
            do_something()
    except (EOFError, UnpicklingError):
        pass

是否有可能使 pickle 读取更像上面常规文件的示例?

最佳答案

是的,的确如此。使用下面的生成器使事件在循环中可读:

def pickleLoader(pklFile):
    try:
        while True:
            yield pkl.load(pklFile)
    except EOFError:
        pass

现在你可以简单地写:

with open(filename) as f:
    for event in pickleLoader(f):
        do_something()

关于python - 在循环中从 Python pickle 文件加载数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675863/

相关文章:

python - 是否有 Django 应用程序可以让我轻松地从 Facebook、Twitter 和 Gmail 导入和邀请 friend ?

python - 爬行时清空输出文件

python - 发送带有 python SSL 错误的电子邮件

python - 如何保存登录数据以供 Python Selenium webdriver 识别

python - 有没有办法在 Apache Airflow 中将 RBAC 与 LDAP 结合起来?

python - 将行分成两列并保持其他列相同

python - 在 Python 中 pickle 静态方法

python - 如何为远程沙盒执行做一个嵌入式python模块?

python - 使用 lambda 序列化 cython 类时出现 pickle 错误

python - 如何将多个 .txt 文件 pickle 成一个 pickle