pickle可以接受几乎所有的python对象,并且将其转换成字符串表示,该过程叫封装(pickling),相反的过程叫拆封(unpickling)。
#python
""" 封装 """
import pickle
from PIL import Image
from pylab import *
im = array(Image.open('test.jpg'))
l1 = ('ceshi',1,3.1415,[1,2,3,4])
f = open('results.pkl','wb')
pickle.dump(im,f) #保存图像数组
pickle.dump(l1,f) #保存元组
f.close()
""" 拆封 """
f = open('results.pkl','rb')
im = pickle.load(f) # 载入图像数组
l1 = pickle.load(f) # 载入元组
f.close()
使用 时务必记得关闭文件操作,否则会发生错误。为了防止这种错误,可以使用 with 语句来改写上面的语句。
#python
""" 封装 """
import pickle
from PIL import Image
from pylab import *
im = array(Image.open('test.jpg'))
l1 = ('ceshi',1,3.1415,[1,2,3,4])
with open('results.pkl','wb') as f:
pickle.dump(im,f) #保存图像数组
pickle.dump(l1,f) #保存元组
""" 拆封 """
with open('results.pkl','rb') as f:
im = pickle.load(f) # 载入图像数组
l1 = pickle.load(f) # 载入元组
cpickle 模块是 pickle 模块的 c 语言编写的优化版本。基本使用的方法类似。可参考博文
1. dump: 将python对象序列化保存到本地的文件。
2. load: 载入本地文件,恢复python对象。
#python
""" 封装 """
from PIL import Image
from pylab import *
import cpickle as pickle #更改这里就可以了
im = array(Image.open('test.jpg'))
l1 = ('ceshi',1,3.1415,[1,2,3,4])
with open('results.pkl','wb') as f:
pickle.dump(im,f) #保存图像数组
pickle.dump(l1,f) #保存元组
""" 拆封 """
with open('results.pkl','rb') as f:
im = pickle.load(f) # 载入图像数组
l1 = pickle.load(f) # 载入元组
#python
""" 封装 """
import cpickle as pickle #更改这里就可以了
l1 = ('ceshi',1,3.1415,[1,2,3,4])
p1 = pickle.dumps(l1) #保存到字符串变量p1中
""" 拆封 """
l1 = pickle.loads(p1) #从字符串变量载入元组
#python
from PIL import Image
im = Image.open('test.jpg').convert('L')
im.save(r'D:\Exp\Python\test1\images\01.jpg') #路径+文件名即可
#python
from numpy import *
list1 = [ 2015,11,11]
savetxt('test.txt',list1,'%i') #文件名+需要存贮的变量+格式
l = ['211', '135', '269', '157', '214', '247', '272', '275', '179', '286', '313', '329', '190', '318', '317', '370']
f = open('test.txt','wb+')
for j in l:
f.write(j)
f.write(' ')
f.close()
Tips1:
f.write(): must be string or buffer, not int
下面的例子就会报错~~~
l = ['211', '135', '269', '157', '214', '247', '272', '275', '179', '286', '313', '329', '190', '318', '317', '370']
# 字符转换成整型
for i in range(len(l)):
l[i] = int(l[i])
f = open('test.txt','wb+')
for j in l:
f.write(j)
f.write(' ')
f.close()
Tips2:
f = file(name[, mode[, buffering]])
入口参数: name 文件名
mode 选项,字符串
buffering 是否缓冲 (0=不缓冲,1=缓冲, >1的int数=缓冲区大小)
返回值 : 文件对象
mode 选项:
"r" 以读方式打开,只能读文件 , 如果文件不存在,会发生异常
"w" 以写方式打开,只能写文件, 如果文件不存在,创建该文件 ; 如果文件已存在,先清空,再打开文件
"rb" 以二进制读方式打开,只能读文件 , 如果文件不存在,会发生异常
"wb" 以二进制写方式打开,只能写文件, 如果文件不存在,创建该文件; 如果文件已存在,先清空,再打开文件
"rt" 以文本读方式打开,只能读文件 , 如果文件不存在,会发生异常
"wt" 以文本写方式打开,只能写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件
"rb+" 以二进制读方式打开,可以读、写文件 , 如果文件不存在,会发生异常
"wb+" 以二进制写方式打开,可以读、写文件, 如果文件不存在,创建该文件;如果文件已存在,先清空,再打开文件