您的位置:时时app平台注册网站 > 编程知识 > 八个职务:(小甲鱼python录像第29讲) 代码收拾与总

八个职务:(小甲鱼python录像第29讲) 代码收拾与总

2019-11-08 01:40

*******************************

#打开record.txt文件
f = open('E:\python\record.txt')  

#定义3个变量,并对它们初始化
boy = []     
girl = []
count = 0

#循环读取文件
for each_line in f:

  #如果当前内容不"======",则继续读取内容;否则读取,开始写操作
  if each_line[:6] != "======":            

    #读取的内容以":"进行分割,分割后分别赋值给元组元素role和spoken
    (role,spoken) = each_line.split(':',1) 

    #如果对话角色为"小甲鱼",则将文件追加到boy列表中
    if role == '小甲鱼':                  
       boy.append(spoken)

    #如果对话角色为"小客服",则将文件追加到girl列表中
    if role == '小客服':                   
       girl.append(spoken)
  else:
     #定义输出文件名称
     file_name_boy = 'boy_' str(count) '.txt'  
     file_name_girl = 'girl' str(count) '.txt' 

     #打开文件
     boy_file = open(file_name_boy,'w')         
     girl_file = open(file_name_girl,'w')     

     #writelines的参数是序列(比如列表),它会迭代帮你写入文件。
     boy_file.writelines(boy)     
     girl_file.writelines(girl) 

     #关闭文件对象
     boy_file.close()                                   
     girl_file.close()                          

     #当前写操作完毕后,必须进行初始化操作,以准备下一个的写入操作
     boy = []
     girl = []
     count  = 1

#因为第三段对话的结尾没有"===",所以需要再次进行上门的重复写操作,保存第三段对话
#定义输出文件名称     
file_name_boy = 'boy_' str(count) '.txt'  
file_name_girl = 'girl' str(count) '.txt'  

#打开文件    
boy_file = open(file_name_boy,'w')         
girl_file = open(file_name_girl,'w') 

#writelines的参数是序列(比如列表),它会迭代帮你写入文件。     
boy_file.writelines(boy)   
girl_file.writelines(girl) 

#关闭文件对象      
boy_file.close()                                
girl_file.close()                    

#关闭文件对象
f.close()   

  pickling(寄放卡塔尔:能够将python的靶子以二进制流方式存放在文书内

时时app平台注册网站 1

  原因深入分析:
   因为boy,girl,count七个变量是做为split_file()函数的意气风发部分变量,当把它们位于split_file()里面包车型客车时候,是对3个变量进行了先河化。
   不过当你把它们放到上面save_file()函数里面包车型地铁时候,便是在save_file()函数里面重新定义了八个名称为boy, girl,count的变量,
   那么它和split_file()函数里面包车型大巴变量是完全未有关联的。

时时app平台注册网站 2

目录:

  难点延伸: 如下图:为何boy[]、girl[]、count地方不相同,结果完全两样吧?

小甲鱼的对话单独保存为boy_*.txt的文件(去掉“小甲鱼:”)
小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)
文件中累积有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个文本(提醒:文件中不一样的对话间生龙活虎度使用“==========”分割卡塔 尔(阿拉伯语:قطر‎

时时app平台注册网站 3

  时时app平台注册网站 4

record.txt文件内容如下:

 

  代码清单2:

#coding=utf-8
def writefile(girl_list,boy_list,count):

    girl_file = open(r'D:girl_'  str(count)  '.txt','wb')

    boy_file = open(r'D:boy_'  str(count)  '.txt','wb')
    girl_file.dump(girl_list,girl_file)
    boy_file.dump(boy_list,boy_file)


    girl_file.close()
    boy_file.close()

def split_file(file_name):
    boy_list = []
    girl_list = []
    count = 1
    f = open(file_name)

    for each_line in f:
        if each_line[:6] != '======':
            (name,content) = each_line.split(':',1)
            if name == '小客服':
                girl_list.append(each_line)

            else:
                boy_list.append(each_line)


        else:
            writefile(girl_list,boy_list,count)
            boy_list.clear()
            girl_list.clear()
            count  = 1
    writefile(girl_list,boy_list,count)
    f.close()

split_file('D:\record.txt')

二、课时29课后习题及答案

#定义一个保存文件的方法
def save_file(boy,girl,count):

   #定义输出文件名称
   file_name_boy = 'boy_' str(count) '.txt'   
   file_name_girl = 'girl' str(count) '.txt'

   #打开文件
   boy_file = open(file_name_boy,'w')         
   girl_file = open(file_name_girl,'w')

   #writelines的参数是序列(比如列表),它会迭代帮你写入文件。   
   boy_file.writelines(boy)     
   girl_file.writelines(girl)  

   #关闭文件对象     
   boy_file.close()                                  
   girl_file.close() 

#定义一个读取和分割文件内容的方法   
def read_file(filename):

   #打开record.txt文件
   f = open('E:\python\record.txt')  

   #定义3个变量,并对它们初始化
   boy = []     
   girl = []
   count = 0

   #循环读取文件
   for each_line in f:

   #如果当前内容不"======",则继续读取内容;否则读取,开始写操作
   if each_line[:6] != "======": 

      #读取的内容以":"进行分割,分割后分别赋值给元组元素role和spoken   
      (role,spoken) = each_line.split(':',1)

      #如果对话角色为"小甲鱼",则将文件追加到boy列表中
      if role == '小甲鱼':                 
         boy.append(spoken)

      #如果对话角色为"小客服",则将文件追加到girl列表中
      if role == '小客服':                 
         girl.append(spoken)

   else:
       #保存文件
       save_file(boy,girl,count)     

       #保存完文件后,再初始化变量       
       boy = []
       girl = []
       count  = 1

   #因为第三段对话的结尾没有"===",所以需要再调用save_file方法,保存第三段对话
   save_file(boy,girl,count)

   #关闭文件对象
   f.close()

#主方法:只要调用read_file就可以完成所有的操作
read_file('E:\python\record.txt')  

pickle.load(file)
  申明:从file中读取一个字符串,并将它重构为原来的python对象。
  file:类公事对象,有read()和readline()接口。

(2卡塔 尔(英语:State of Qatar)小客服的对话单独保存为girl_*.txt的文件(去掉“小客服:”)

  义务:将文件(record.txt)中的数据开展私分,并安装以下法规保存起来。
  1.小甲鱼的对话单独保存为boy_*.txt的文件(去掉"小甲鱼:")
  2.小客性格很顽强在荆棘满途或巨大压力面前不屈的对话单独保存为girl_*.txt的文件(去掉"小客服:")
  3.文件中风流罗曼蒂克共有三段对话,分别保存为boy_1.txt、boy_2.txt、boy_3.txt、gilr_1.txt、gilr_2.txt、gilr_3.txt
      共6个文本。(提醒:分裂的对话已经应用"===="进行分割)

  上次自个儿关系了对文件的读写等风流倜傥体系操作,回看下,要想从文件内读取内容无论是read依然readline,读收取来的是或不是都是字符串呢?那么少年老成旦想让字典、列表那个数据类型保存进文件到读收取来都以原先的门类不改变吗?那时候大家推荐一个pytho新的模块,化解那些难点!

  生机勃勃、四个义务

 

 

****************

  代码项目清单1:

 1、下边是贮存在list1这么些列表到d盘test.pkl文件内:

****************

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
小客服:小甲鱼,今天有客户问你有没有女朋友?
小甲鱼:咦??
小客服:我跟她说你有女朋友了!
小甲鱼:。。。。。。
小客服:她让你分手后考虑下她!然后我说:"您要买个优盘,我就帮您留意下~"
小甲鱼:然后呢?
小客服:她买了两个,说发一个货就好~
小甲鱼:呃。。。。。。你真牛!
小客服:那是,谁让我是鱼C最可爱小客服嘛~
小甲鱼:下次有人想调戏你我不阻止~
小客服:滚!!!
================================================================================
小客服:小甲鱼,有个好评很好笑哈。
小甲鱼:哦?
小客服:"有了小甲鱼,以后妈妈再也不用担心我的学习了~"
小甲鱼:哈哈哈,我看到丫,我还发微博了呢~
小客服:嗯嗯,我看了你的微博丫~
小甲鱼:哟西~
小客服:那个有条回复“左手拿著小甲魚,右手拿著打火機,哪裡不會點哪裡,so easy ^_^”
小甲鱼:T_T
================================================================================
小客服:小甲鱼,今天一个会员想找你
小甲鱼:哦?什么事?
小客服:他说你一个学生月薪已经超过12k了!!
小甲鱼:哪里的?
小客服:上海的
小甲鱼:那正常,哪家公司?
小客服:他没说呀。
小甲鱼:哦
小客服:老大,为什么我工资那么低啊??是时候涨涨工资了!!
小甲鱼:啊,你说什么?我在外边呢,这里好吵吖。。。。。。
小客服:滚!!!

  二、课时29课后习题及答案

时时app平台注册网站 5

时时app平台注册网站 6

练习题:将文件(record.txt卡塔尔国中的数据应用pickle将文件分割成分化文件:

时时app平台注册网站 7

pickle.dump(obj, file, [,protocol])
  证明:将对象obj保存到文件file中去。
     protocol为系列化使用的构和版本,0:ASCII合同,所系列化的目标使用可打字与印刷的ASCII码表示;1:老式的二进制公约;2:2.3本子引进的新二进制公约,较从前的更急忙。当中公约0和1宽容老版本的python。protocol暗中认可值为0。
     file:对象保存到的类公事对象。file必需有write()接口, file能够是多个以'w'情势展开的文书可能一个StringIO对象也许别的任何完毕write()接口的靶子。假若protocol>=1,文件对象需要是二进制情势张开的。

*******************************

  pickle的本质正是行使一些算法将您的多寡对象转换成二进制文件,积存在磁盘上,也可存在数据库或许别的机器上。

时时app平台注册网站 8

2、上边是从文件内读取刚刚保存的列表:

职责:将文件(record.txt卡塔 尔(英语:State of Qatar)中的数据举办私分并依照以下规律保存起来:

纪念打开文件要以二进制情势张开(b卡塔尔

其实可以应用函数封装得越来越雅观些:

时时app平台注册网站 9

时时app平台注册网站 10

以上即为文件内容,尝试着写出地点的代码吧,答案如下:

 

仍为以二进制方式读取文件(rb卡塔尔

时时app平台注册网站 11

  unpickling(读取卡塔尔国:将文件内的二进制流转变为对象

意气风发、一个任务

时时app平台注册网站 12

 

时时app平台注册网站 13

时时app平台注册网站 14

时时app平台注册网站 15

时时app平台注册网站 16

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

def save_file(boy, girl, count):
    file_name_boy = 'boy_'   str(count)   '.txt'
    file_name_girl = 'girl_'   str(count)   '.txt'

    boy_file = open(file_name_boy, 'w')
    girl_file = open(file_name_girl, 'w')

    boy_file.writelines(boy)
    girl_file.writelines(girl)

    boy_file.close()
    girl_file.close()


def split_file(file_name):
    f = open('record.txt')

    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)
            if role == '小客服':
                girl.append(line_spoken)
        else:
            save_file(boy, girl, count)

            boy = []
            girl = []
            count  = 1

    save_file(boy, girl, count)

    f.close()


split_file('record.txt')

时时app平台注册网站 17

(3卡塔尔国文件中一同有三段对话,分别保存为boy_1.txt, girl_1.txt,boy_2.txt, girl_2.txt, boy_3.txt, gril_3.txt共6个公文(提醒:文件中不相同的对话间已经运用“==========”分割卡塔 尔(阿拉伯语:قطر‎

f = open('record.txt')

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)
        if role == '小客服':
            girl.append(line_spoken)
    else:
        file_name_boy = 'boy_'   str(count)   '.txt'
        file_name_girl = 'girl_'   str(count)   '.txt'

        boy_file = open(file_name_boy, 'w')
        girl_file = open(file_name_girl, 'w')

        boy_file.writelines(boy)
        girl_file.writelines(girl)

        boy_file.close()
        girl_file.close()

        boy = []
        girl = []
        count  = 1

file_name_boy = 'boy_'   str(count)   '.txt'
file_name_girl = 'girl_'   str(count)   '.txt'

boy_file = open(file_name_boy, 'w')
girl_file = open(file_name_girl, 'w')

boy_file.writelines(boy)
girl_file.writelines(girl)

boy_file.close()
girl_file.close()

f.close()

本文由时时app平台注册网站发布于编程知识,转载请注明出处:八个职务:(小甲鱼python录像第29讲) 代码收拾与总

关键词:

  • 上一篇:类世襲
  • 下一篇:没有了