|

楼主 |
发表于 2019-11-23 00:04:19
|
显示全部楼层
29课圆满完成,先发课堂练习,因为封装比较丑,算个半成品- def split1(i):
- b='f:\\boy_'+str(i)+'.txt'
- g='f:\\girl_'+str(i)+'.txt'
- global boy ,girl #虽然解决繁琐的问题,但是小甲鱼说过global是隐患,所以我又觉得不妥
- boy=open(b,'a+')
- girl=open(g,'a+') #有没有办法弄成nonlocal 或lambda,我测试了
- #报错说是function没有write属性,所以
-
- def save1():
- f=open('f:\\record.txt')
- i=1
-
- split1(i)
- for a1 in f:
- if '========'in a1:
- boy.close()
- girl.close()
- i+=1
- split1(i)
- continue
- if "小甲鱼:"in a1:
- boy.write(a1[4::])
- if "小客服:"in a1:
- girl.write(a1[4::])
-
- boy.close()
- girl.close()
- f.close()
-
- save1()
复制代码
比小甲鱼看起来要简单粗暴一点点,当然不够优雅
动手题0
- def savetxt1():
- name =input('请输入文件名')
- file_write=input('请输入内容【单独输入‘:w’保存退出】:\n')
- name1='f:\\'+name+'.txt'
- f=open(name1,'a+')
- while file_write !=':w':
-
- f.write(file_write+'\n')
- file_write=input()
- f.close()
- savetxt1()
复制代码
基本是一样的,只是我用的while 判断,小甲鱼用了if else,从行数来说我略胜一筹。
动手题1
我一直思考怎么同步行数比较用了字典,感觉很牛批,看到小甲鱼直接用.readline()的指针,就感觉小污龟就是小污龟,666,虽然这把被小污龟ko了,但字典同步打开了新思路
- def different():
- name1='f:\\'+input('请输入第一个文件名:')+'.txt'
- name2='f:\\'+input('请输入另一个文件名:')+'.txt'
- f1=open(name1,'r')
- f2=open(name2,'r')
- i=0
- line1=0
- d1={}
- list1=[]
- for fx1 in f1:
- line1+=1
- d1[line1]=fx1
- line1=0
- for fx2 in f2:
- line1+=1
- x1=d1[line1]
- if x1 != fx2:
- i+=1
- list1.append(line1)
- print('两个文件共有【',i,'】处不同')
- for x in list1:
- print('第',x,'行不一样')
-
- f1.close
- f2.close
- different()
复制代码
动手题2,由于指针理解不够,不怎么会.readline()我写的就是个弟弟,就不发了
动手题3行数来看差不多,但逻辑完全不一样
- def lineP():
- file=input('请输入要打开的文件(c:\\text.txt):')
- file1=open(file,'r')
- line=input('请输入需要显示该文件行数【格式如13:21或:21或21:】:')
- linelist=line.split(':')
-
- i=0
- i1=linelist[0]
- i2=linelist[1]
- if i1=='' and i2!='':
- print('文件',file,'从开始到第',i2,'行内容如下:')
- i1=0
-
- elif i2==''and i1!='':
- print('文件',file,'从第',i1,'行到末尾内容如下:')
- i2=len(file1.read()) #取一个大于等于总行数的数想出来的办法
- file1.seek(0)
- elif i1=='' and i2=='':
- print('文件',file,'全文内容如下:')
- i1=0
- i2=len(file1.read())
- file1.seek(0)
- else:
- print('文件',file,'从第',i1,'行到第',i2,'行内容如下:')
- i1=int(i1)
- i2=int(i2)
-
- for x in file1:
- i+=1
- if i>=i1 and i<=i2:
- print(x)
-
- file1.close()
- lineP()
复制代码
第四题,感觉差不多,似乎我的更容易理解
- def x():
- name1=input('请输入文件名:')
- name='f:\\'+name1
- old=input('请输入需要替换的单词或字符:')
- new=input('请输入新的单词或字符:')
-
- file=open(name,'r+')
- f=file.read()
-
- i=f.count(old)
- print('文件',name1,'中共有',i,'个【',old,'】')
- print('您确定把所有的【',old,'】替换成【',new,'】吗?')
- t=input('\n【YES/NO】:')
- if t=='yes'or t=='YES':
- f1=f.replace(old,new)
- file.close()
- file1=open(name,'w')
- file1.write(f1)
-
- file1.close()
- x()
-
-
复制代码 |
|