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()
比小甲鱼看起来要简单粗暴一点点,当然不够优雅
动手题0def 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()
|