使用w 模式,当我们直接朝文件中写入bbbbbb,毋庸置疑,肯定是可以的。
接着,我们直接读取这个文件中的内容,奇怪的现象发生了,什么都读取不到。这是因为w 模式,在进行文件读取的时候,默认是先写再读。但是我们确实没有写入任何东西呀?这是由于系统默认帮我们写入了一个空值,因此把原有内容覆盖了。所以再当我们读取文件中的内容的时候,发现读取为空。
再接着,我们朝文件中,写入内容后再立即读取,这下仍然读取不到任何内容,这又是为什么呢?这是由于我们第一次写入“哈哈哈哈哈哈”的时候,句柄移动到了内容最后。当我们立即读取的时候,句柄从内容最后的位置,继续朝后面读,因此啥也没有。
最后,当朝文件中写入内容后,调整句柄位置后,再读取文件中的内容,发现就有了内容。这是由于我们使用了f.seek(0)方法,将句柄由内容末尾调整到了内容开头,因此就又有了内容。
4)a :可读可写
#直接朝文件中写入内容
f=open(r"G:\6Tipdm\file_read_write\yesterday4.txt","a ",encoding="utf-8")
f.write("哈哈")
f.close()
#直接读取文件中的内容
f=open(r"G:\6Tipdm\file_read_write\yesterday4.txt","a ",encoding="utf-8")
data=f.read()
print(data)
f.close()
#调整句柄位置后,再读取文件中的内容
f=open(r"G:\6Tipdm\file_read_write\yesterday4.txt","a ",encoding="utf-8")
f.seek(0)
data=f.read()
print(data)
f.close()
结果如下:
使用a 模式,朝文件中写入内容,毋庸置疑,肯定是没问题的。
接着,当我们读取上述文件中的内容,会发现什么也读取不到。这是由于,使用r 模式打开文件,文件句柄默认放在内容的最后面,因此你直接读取其中的内容,什么也没有。
最后,在读取文件中内容之前,我们使用了f.seek(0)方法,将句柄由内容末尾调整到了内容开头,再次读取文件中的内容,发现就有了内容。
3.read、readline、readlines的区别
1)read()方法的使用说明
f=open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8")
data=f.read()
print(type(data))
print(data)
f.close()
结果如下:
2)readline()方法的使用说明
f=open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8")
data=f.readline()
print(type(data))
print(data)
f.close()
f=open(r"G:\6Tipdm\file_read_write\test.txt","r",encoding="utf-8")
foriinrange(3):
data=f.readline()
print(data)
f.close()
结果如下: