小甲鱼python课后题答案_[Python]小甲鱼Python视频第031课(pickle)课后题及解答

# -*- coding: utf-8 -*-

"""

Created on Fri Feb 15 23:05:24 2019

@author: fengs

"""

"""

0. pickle的实质是什么?

a.将对象数据以二进制形式保存在文件中

b.将对象数据以二进制形式从文件中读取

输入输出二进制流

1. 使用pickle的什么方法存储数据?

dump()

2. 使用pickle的什么方法读取数据?

load()

3. 使用pickle能不能保存为”*.txt”类型的文件?

可以,后缀名可以任意指定,只不过用文本编辑器打开时,是乱码

"""

"""

动动手:

编写一个程序,这次要求使用pickle将文件( record.txt (1.1 KB, 下载次数: 3988) )里的对话按照以下要求腌制成不同文件(没错,是第29讲的内容小改,考考你自己能写出来吗?):

小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)

小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)

文件中总共有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个文件(提示:文件中不同的对话间已经使用“==========”分割)

"""

import pickle

file_name_base_boy = 'boy_';

file_name_base_girl = 'girl_';

file_count = 1;

#读取record文件

f_record = open('record.txt','r');

file_name_boy = file_name_base_boy + str(file_count) + ".pkl";

file_name_girl = file_name_base_girl + str(file_count) + ".pkl";

fid_boy = open(file_name_boy,'wb');

fid_girl = open(file_name_girl,'wb');

boy_spoken = [];

girl_spoken = [];

for each_line in f_record:

print(each_line);

if each_line[:6]!='======':

[name,spoken]= each_line.split(':',1);

if name == '小甲鱼':

boy_spoken += spoken;

if name == '小客服':

girl_spoken += spoken;

else:

pickle.dump(boy_spoken,fid_boy);

pickle.dump(girl_spoken,fid_girl);

fid_boy.close();

fid_girl.close();

boy_spoken = [];

girl_spoken = [];

file_count +=1;

file_name_boy = file_name_base_boy + str(file_count) + ".pkl";

file_name_girl = file_name_base_girl + str(file_count) + ".pkl";

fid_boy = open(file_name_boy,'wb');

fid_girl = open(file_name_girl,'wb');

else:

pickle.dump(boy_spoken,fid_boy);

pickle.dump(girl_spoken,fid_girl);

fid_boy.close();

fid_girl.close();

#验证代码

def read_pkl():

file_name_boy1 = 'boy_1.pkl';

file_name_boy2 = 'boy_2.pkl';

file_name_boy3 = 'boy_3.pkl';

file_name_girl1 = 'girl_1.pkl';

file_name_girl2 = 'girl_2.pkl';

file_name_girl3 = 'girl_3.pkl';

fid_boy1 = open(file_name_boy1,'rb');

fid_boy2 = open(file_name_boy2,'rb');

fid_boy3 = open(file_name_boy3,'rb');

fid_girl1 = open(file_name_girl1,'rb');

fid_girl2 = open(file_name_girl2,'rb');

fid_girl3 = open(file_name_girl3,'rb');

boy_spoken_1 = pickle.load(fid_boy1);

boy_spoken_2 = pickle.load(fid_boy2);

boy_spoken_3 = pickle.load(fid_boy3);

girl_spoken_1 = pickle.load(fid_girl1);

girl_spoken_2 = pickle.load(fid_girl2);

girl_spoken_3 = pickle.load(fid_girl3);

print('-------');

print(str(boy_spoken_1));

print('-------');

print(str(boy_spoken_2));

print('-------');

print(str(boy_spoken_3));

print('-------');

print(str(girl_spoken_1));

print('-------');

print(str(girl_spoken_2));

print('-------');

print(str(girl_spoken_3));

print('-------');

fid_boy1.close();

fid_boy2.close();

fid_boy3.close();

fid_girl1.close();

fid_girl2.close();

fid_girl3.close();

read_pkl();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值