一直以为w+可读可写,会先清空的意思是我
with open(input, ‘w+’, encoding=‘utf-8’) as f:
print( f.read())
会打印原来的内容.
f.write(“3123d”)
会把原文覆盖掉.
实际呢,w+一上来哪怕我写的是pass,也把我原文给清空了.根本读不了原文!!!
好吧,试试先写后读
with open(input, ‘w+’, encoding=‘utf-8’) as f:
f.write(“3123d”)
print (f.read())
一样毛都没有,到底要怎么读?查了一下,发现要先移动光标到开头.f.seek(0).
咋设计得这么废啊.大部分人的需求不应该是读取原文,修改一下,覆盖回去吗?无论w+,a+都先写后读,是逼着人不能在同一文件上操作吗?非要开个新文件保存?
r+打开自己再写入并没有覆盖原来的内容.再开一次才会覆盖.
with open(input, ‘r+’, encoding=‘utf-8’, errors=‘ignore’) as f:
d=f.read()
d = d.replace(“f”, ‘4’)
f0.write(d)
最后测试只有这样才可以.
with open(input, ‘r+’, encoding=‘utf-8’, errors=‘ignore’) as f:
with open(input, ‘r+’, encoding=‘utf-8’, errors=‘ignore’) as f0:
d=f.read()
d = d.replace(“f”, ‘4’)
f0.write(d)