r+疑问,到底能不能覆盖,覆盖哪部分内容?
1,我建了一个文档,上面输入四行9,8,7,6,一个数字一行。然后按照下面代码运行时,第一行和第二行被替换成1,2,其余不变,变成(1,2,7,6),然后不管再执行多少次,都还是这样。
def write_file(): file_name='write_word.txt' with open(file_name,'r+',encoding='utf-8') as f: f.write('1\n') f.write('2\n')
2,同样的文档,内容还是9,8,7,6,按如下代码运行,第一次运行内容被追加写入在第5,6行,变成(9,8,7,6,1,2),然后每次运行,都在后面追加1,2两行。即9,8,7,6,1,2,1,2,1,2......打印出来的结果为上一次运行结束后文档的内容。
def write_file(): file_name='write_word.txt' with open(file_name,'r+',encoding='utf-8') as f: print(f.read()) f.write('1\n') f.write('2\n')
3,还是同样的文档,(9,8,7,6),按如下代码运行,第一次运行前两行被替换,变成(1,2,7,6),打印的内容为(7,6),重复运行,文档内容不再改变,打印内容也和第一次相同。
def write_file(): file_name='write_word.txt' with open(file_name,'r+',encoding='utf-8') as f: f.write('1\n') f.write('2\n') print(f.read())
这三段代码唯一的不同在于print(f.read())这句,有或者没有,在write之前或者之后,结果都不同,请详细解释,谢谢!
正在回答
同学,你好。一个中文占3个字节,若使用seek()则参数应是3的倍数,例seek(6)
如果我的回答解决了您的疑惑,请采纳!祝学习愉快~~~~
同学你好:
这个读取文件的指针有关系(标注的就是)。
一开始,文件的指针在开头。写入时,从前向后依次覆盖写入,由于同学写入时只替换了两行数据,所以就是1276的现象。
例如写入四行:
2、第二种,同学先读了一遍,这时,文件的指针在文本最后的位置,所以就会根据指针的位置依次进行覆盖。由于后面没有内容,所以会出现追加的现象。
3、指针在文件的开头,所以1和2会将9和8代替。这时文件的指针在2的后面,然后在读取数据,这时,文件指针的后面只有7和6,所以输出7和6,但文件的内容已经改为1276。
文件的所有操作都是根据文件指针的位置来操作的。
如果我解决了同学的问题,请采纳!学习愉快^_^。
相似问题
登录后可查看更多问答,登录/注册
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星