假如我们在写一句天安门上太阳升,会出现啥情况呢?
f=open(r"G:\6Tipdm\file_read_write\yesterday2.txt","w",encoding="utf-8")
f.write("天安门上太阳升")
f.write("很好,很好")
f.close()
结果如下:
意外发生:当我们再次写入新的内容的时候,发现之前写的内容不见了,这是为啥呢?这就是我们下面要讲述的文件读写的几种常见模式。
2.文件读写的几种常见模式(你不清楚的知识点)
1)关于r 、w 、a 使用说明(易错点)
当我们读取某个文件,向文件中写入某些内容(覆盖写),向文件中追加写入某写内容时,最好的方式就是分别使用r、w、a这三种模式。对于这三种模式,要么读,要么写,读模式就不能写,写模式就不能读。
对于r 、w 、a 这三种模式,如果你不是特别清楚python文件读写的原理,就不要轻易使用,因为会出现很多问题,下面我们仅演示r 、w 、a 这三种模式。
2)r 模式:可读可写
对于这种模式,不管是读取文件中的内容,还是朝文件中写入内容。前提条件:文件存在。
#只读取文件中的内容
f=open(r"G:\6Tipdm\file_read_write\yesterday1.txt","r ",encoding="utf-8")
data=f.read()
print(data)
f.close()
#朝文件中写入内容后,立即读取,会出现啥问题?
f=open(r"G:\6Tipdm\file_read_write\yesterday1.txt","r ",encoding="utf-8")
f.write("丽丽姑娘")
data=f.read()
print(data)
f.close()
#朝文件中写入内容后,调整句柄位置后,再读取,会出现啥问题?
f=open(r"G:\6Tipdm\file_read_write\yesterday1.txt","r ",encoding="utf-8")
f.write("丽丽姑娘")
f.seek(0)
data=f.read()
print(data)
f.close()
结果如下:
使用r 模式,当只读文件的时候,可以读取到其中的内容。
当写入内容后,立即读取文件内容,发现什么也读取不到。这是由于当你写入内容后,文件句柄会放在写入内容的最后面,因此当你立即读取的时候,句柄会从上次内容最后的位置,往后面读,因此读取为空。
当朝文件中写入内容后,调整句柄位置后,再读取文件中的内容,发现就有了内容。这是由于我们使用了f.seek(0)方法,将句柄由内容末尾调整到了内容开头,因此就又有了内容。
3)w :可读可写
#直接往文件中写入内容
f=open(r"G:\6Tipdm\file_read_write\yesterday3.txt","w ",encoding="utf-8")
f.write("bbbbbb")
f.close()
#直接读取上述文件,看看会发生啥问题?(特别注意这一步)
f=open(r"G:\6Tipdm\file_read_write\yesterday3.txt","w ",encoding="utf-8")
data=f.read()
print(data)
f.close()
#朝文件中写入内容后,立即读取,又会发生什么?
f=open(r"G:\6Tipdm\file_read_write\yesterday3.txt","w ",encoding="utf-8")
f.write("哈哈哈哈哈")
data=f.read()
print(data)
f.close()
#朝文件中写入内容后,调整句柄位置后,再读取,会发生什么?
f=open(r"G:\6Tipdm\file_read_write\yesterday3.txt","w ",encoding="utf-8")
f.write("嘿嘿嘿嘿嘿")
f.seek(0)
data=f.read()
print(data)
f.close()
结果如下: