|
发表于 2021-7-25 11:07:59
|
显示全部楼层
本楼为最佳答案
本帖最后由 阿奇_o 于 2021-7-25 15:09 编辑
如果你一定要 在同一个文件里 "又读又写",那么 就必须用 'r+' 模式。
为什么? —— 因为
'r' 是 只读模式,只能读取,不能写入;
'w' 是 只写模式(所以你在此模式下,调用.readlines()方法,就会报错 not readable );
'w+' 可以写,也可以读,但是 它会先清空!相当于你读不到原来的任何内容。
所以,可以选择的就只有 'r+' 模式了,它不会清空原来的内容,可读可写,新写入的会 追加进去。
所以,可以这样写:
- def read_write(file, mode):
- with open(file, mode, encoding='utf-8') as f:
- new_lines = [line.strip().replace('Emma', 'XXXX') for line in f.readlines()] # 先读取和修改
- f.seek(0) # 回到起点
- f.truncate() # 开始清空(开始向下移动指针并删除每一行 )
- f.write('\n'.join(new_lines)) # 写入修改后的内容
-
- read_write('em.txt', 'r+')
复制代码 |
|