小甲鱼python教程29课的第四道练习题
具体要求如下
f=open("E:\\python\\%s"%file_name,encoding="UTF-8")
pastword=input("请输入需要替换的内容:")
dict1={}
num=0
list1=[]
for i in f.read():
if i==pastword:
dict1[num]=i
list1.append(num)
num+=1
print("本文件共有%s个%s"%(len(dict1),pastword))
newbook=f.read()
neword=input("请输入新的内容:")
newbook=newbook.replace(pastword,neword)
f1=open("E:\\python\\%s"%file_name,"w",encoding="UTF-8")
f1.write(newbook)
f1.close()
print("写入成功!")
f.close()
输出之后文件为空白,求解是啥问题啊。
问题出在 newbook=f.read()
在这之前你的for loop 中已经遍历了 f。这个时候指针指在文件的末尾,你再执行f.read(),返回的结果是从文件的末尾开始,也就是空值 None.
解决方法有几种
在newbook=f.read()之前,再执行一次open文件,重置 f
在newbook=f.read()之前,执行f.seek(0),指针会回到文件头部
在代码首部,执行f.read(),并将其赋值一个变量,也就是将所有文件内容保存到这个变量中。在之后执行for loop或者其他命令的时候,从这个变量获取文件内容。