求助!写了一个文字内容替换的代码,输出文件却总是空白!

小甲鱼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.
解决方法有几种

1. 重新读取文件

在newbook=f.read()之前,再执行一次open文件,重置 f

2.将指针重置

在newbook=f.read()之前,执行f.seek(0),指针会回到文件头部

3.在打开文件后将文件内容赋值给变量

在代码首部,执行f.read(),并将其赋值一个变量,也就是将所有文件内容保存到这个变量中。在之后执行for loop或者其他命令的时候,从这个变量获取文件内容。

https://blog.csdn.net/da_keng/article/details/65633498