当前位置: 首页 > 面试题库 >

如何在python中使用append与pickle?

华宇
2023-03-14
问题内容

我需要附加一个泡菜文件(因为我一次都没有整个字典)。为此,我编写了以下代码:

 import pickle
 p={}
 p[1]=2
 q={}
 q['a']=p
 p={}
 p[2]=0
 pickle.dump(q, open("save12.p","ab"))
 f={}
 f['b']=p
 pickle.dump(f,open("save12.p","ab"))

但是,当我加载泡菜文件时,我在那里找不到字典f的值?

有人可以建议我应该如何添加一个泡菜文件吗?

另外,像“ dbm”这样的数据库无法满足我的需求,因为我正在Windows上工作


问题答案:

腌制流完全是独立的,因此解腌将一次解腌一个对象。

因此,要释放多个流,应重复释放该文件,直到得到EOFError为止:

>>> f=open('a.p', 'wb')
>>> pickle.dump({1:2}, f)
>>> pickle.dump({3:4}, f)
>>> f.close()
>>> 
>>> f=open('a.p', 'rb')
>>> pickle.load(f)
{1: 2}
>>> pickle.load(f)
{3: 4}
>>> pickle.load(f)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
EOFError

这样您的代码便会看起来像

import pickle
objs = []
while 1:
    try:
        objs.append(pickle.load(f))
    except EOFError:
        break


 类似资料:
  • 本文向大家介绍python append、extend与insert的区别,包括了python append、extend与insert的区别的使用技巧和注意事项,需要的朋友参考一下 最近在自学Python语言,看到向列表增加更多数据时被append(),extend(),insert()方法绕晕了。 append 和extend都只需要一个参数,并且自动添加到数组末尾,如果需要添加多个,可用数组

  • 问题内容: 为什么这项工作有效- 但这不是- 第二种情况下的输出为。你能解释一下输出吗? 问题答案: 该方法没有返回值。它会在适当的位置更改列表,并且由于您没有将分配给任何变量,因此只是“迷失在空间” 我没有重载所有有问题的方法,但是概念应该很清楚。

  • 问题内容: 如何设置Selenium与Python一起使用?我只想用Python编写/导出脚本,然后运行它们。是否有任何资源?我尝试使用谷歌搜索,但是发现的东西要么是指Selenium(RC)的过时版本,要么是Python的过时版本。 问题答案: 您是说Selenium WebDriver吗?… 先决条件 :根据您的操作系统安装Python 使用以下命令安装 并在您的代码中使用此模块 您还可以根据

  • 问题内容: 我打算为Python安装一个虚拟环境,以使我的Python包分开。这样做的动机之一也是在我的机器上同时存在两个版本的Python(Ubuntu 14.04)。我有以下奇观: 应该以什么顺序安装Python,PIP和virtualenv?有关系吗? 完成后,如何在virtualenv下将两个python版本分开? 假设我正在处理单独的项目,是否建议将每个项目都保存在virtualenv创

  • 问题内容: 我正在尝试对正在编写的C python扩展进行memcheck,但是我无法设置valgrind与python一起使用。我真的很感谢一些建议。仅出于上下文考虑,这是Ubuntu 13.10,python 2.7.5+和valgrind 3.8.1。 根据我的建议,我做了以下工作。 1)下载了python源 2)应用了代码补丁,即“在Objects / obmalloc.c中取消注释Py_

  • 问题内容: 我刚刚在Windows 7计算机上安装了OpenCV。结果,我得到一个新目录: 在此目录中,我有两个文件:和。 然后,我尝试使用from Python。我执行以下操作: 结果,我收到以下错误消息: 我究竟做错了什么? 添加 至于有人建议在这里,我抄的内容的。它没有帮助。 加了2 我的环境变量具有以下值: 我需要改变什么吗?我需要添加一些东西吗? 加3 我认为我的问题很笼统:如何使用图书