LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2348|回复: 2

python:关于cpickle模块

[复制链接]
发表于 2009-12-8 19:23:01 | 显示全部楼层 |阅读模式
我用cpickle模块的dump函数向文本文件添加内容,发现添加的不是我想要的:
代码如下:
#!/usr/bin/python
# Filename: pickling.py
import cPickle as p
#import pickle as p
shoplistfile = 'shoplist.txt'
# the name of the file where we will store the object
shoplist = ['apple', 'mango', 'carrot']
# Write to the file
f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()
我想让shoplist.txt的内容为:
apple mango carrot
结果用此程序运行后,shoplist.txt的内容为:
(lp1
S'apple'
p2
aS'mango'
p3
aS'carrot'
p4
a.
难道我想向文件插入内容只能用file来操作,不能用容器吗(cpickle)
另外如果使用cpickle的dump函数还插入一个已有文件会不会吧原来文件的内容覆盖啊还是在源文件的末尾插入啊
谢谢,刚学习,试着编个程序,遇到麻烦了,请指点迷津,不胜感激
发表于 2009-12-8 22:33:28 | 显示全部楼层
cpickle 是二进制储存,其格式不透明。并且每版本的 python 可能更改此格式。因此不要依赖其具体的内容。

每次直接全部覆盖,只能用 file 操作。

其实只支持保存和读取而已。

要修改,先 load 出来直接修改对象,再 dump 回去。
回复 支持 反对

使用道具 举报

发表于 2009-12-25 22:27:04 | 显示全部楼层
Shelve

  1. import shelve
  2. d = shelve.open(raw_input("Input File Name: "))
  3. d['foo'] = 'bar'
  4. d.close()
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表