內(nèi)容來源于網(wǎng)絡(luò)吭敢,本人只是在此稍作整理碰凶,如有涉及版權(quán)問題,歸小甲魚官方所有鹿驼。
練習(xí)題(來自小甲魚官方論壇)
0.pickle的實(shí)質(zhì)是什么欲低?
答:pickle的實(shí)質(zhì)就是利用一些算法將你的數(shù)據(jù)對象“腌制”成二進(jìn)制文件,存儲在磁盤上畜晰,當(dāng)然也可以放在數(shù)據(jù)庫或者通過網(wǎng)絡(luò)傳輸?shù)搅硪慌_計(jì)算機(jī)上砾莱。
1.使用pickle的什么方法存儲數(shù)據(jù)?
答:pickle.dump(data, file) # 第一個參數(shù)是待存儲的數(shù)據(jù)對象凄鼻,第二個參數(shù)是目標(biāo)存儲的文件對象腊瑟,注意要先使用'wb'的模式open文件哦。
2.使用pickle的什么方法讀取數(shù)據(jù)块蚌?
答:pickle.load(file) # 參數(shù)是目標(biāo)存儲的文件對象闰非,注意要先使用'rb'的模式open文件哦。
3.使用pickle能不能保存".txt"類型的文件峭范?
答:可以财松,不過打開后是亂碼,因?yàn)槭且远M(jìn)制的模式寫入的虎敦。
編程題
0. 編寫一個程序游岳,這次要求使用pickle將文件(33.txt)里的對話按照以下要求腌制成不同文件(沒錯政敢,是第29講的內(nèi)容小改其徙,考考你自己能寫出來嗎?這里建議下載后的33.txt文件最后在自己的本地新建一個同名文件喷户,再把內(nèi)容拷貝進(jìn)去唾那,避免一些由于編碼造成的報(bào)錯
):
答:
import pickle
def save_pickle_file(boy,girl,count):
file_name_boy = 'boy_' + str(count) + '.txt'
file_name_girl = 'girl_' + str(count) + '.txt'
boy_pickle_file = open(file_name_boy,'wb')
girl_pickle_file = open(file_name_girl,'wb')
pickle.dump(boy,boy_pickle_file)
pickle.dump(girl,girl_pickle_file)
boy_pickle_file.close()
girl_pickle_file.close()
def split_file(file_name):
f = open(file_name)
boy = []
girl = []
count = 1
for each_line in f:
if each_line[:6] != '======':
(role,line_spoken) = each_line.split(':',1)
if role == '小甲魚':
boy.append(line_spoken)
elif role == '小客服':
girl.append(line_spoken)
else:
save_pickle_file(boy,girl,count)
count += 1
boy = []
girl = []
save_pickle_file(boy,girl,count)
f.close()
split_file('33.txt')
1.請寫下這一節(jié)課你學(xué)習(xí)到的內(nèi)容:格式不限,回憶并復(fù)述是加強(qiáng)記憶的好方式褪尝!
piickle模塊的用法:
總體使用方法類似于文件的讀寫闹获,都要遵循打開→讀/寫→關(guān)閉寫入:
首先打開:pickle_file = open('my_list.pkl','wb')#打開名為my_list.pkl的文件,以二進(jìn)制的方式進(jìn)行寫入
寫入:pickle.dump(temp_list,pickle_file)#把列表temp_list中的內(nèi)容寫入到my_list.pkl中,pickle_file表示打開的文件對象
關(guān)閉:pickle_file.close()讀群友啤:
打開:pickle_file = open('('my_list.pkl','rb')#以二進(jìn)制讀的方式打開文件my_list.pkl
讀缺芊獭:temp1_list = pickle.load(pickle_file)
關(guān)閉:pickle_file.close()