接下来我们看w模式,w模式就是只写模式。
我们以前研究r模式的时候我们知道,r模式在文件不存在的时候会报错,文件存在的时候问价指针会跳到开始位置。
我们还是按照同样的套路,我们来看w模式下文件不存在会发生什么。
我写一个不存在的文件c.txt,然后子代码我就先写一个pass。
with open(r'G:\PythonProject\学习\学习文件\date\c.txt', mode='wt', encoding='utf-8') as f:
pass
然后看左边的文件夹列表,看到是没有c.txt的。
现在我一运行,左边就出现了。
所以说w模式下,如果文件路径不存在,就会创建一个空白文件。毫无疑问,文件指针也是位于开始位置。
既然文件路径不存在就会创建空白文件,那如果文件路径存在会发什么呢?
现在我在这个c.txt里面写点内容,然后多复制几行。
我们不保存的话,pycharm也会帮我们自动保存的。
现在这个c.txt是存在的对吧,而且里面也有内容,然后我再来运行一次这个代码。
现在看好像没什么异常,但是当我们打开c.txt的时候看到刚刚里面写的全部不见了。
所以说w模式下,当文件存在的时候会清空文件内容,然后文件指针也会停在开始位置。
所以你千万不要用w模式打开你重要的文件,只要你用w模式打开了,你的文件也报废了。
现在我在子代码块里尝试一下f.read()来运行看看。
直接报错了,说不可读。
这样就验证了我们说w模式是只写模式,只能写不能读。
然后我们要写内容的话,就要调用一个功能了。叫f.write()。
我们可以给它传一个字符串,因为是t模式吗!读写都是以字符串为单位。
with open(r'G:\PythonProject\学习\学习文件\date\c.txt', mode='wt', encoding='utf-8') as f:
f.write('晓看天色暮看云')
这样就可以把这个字符串写入到这个文件里面,然后我们再来运行一下。
打开c.txt。
这样就把数据写进去了。
你注意看这个文件,是没有换行的,如果想换行的话,就得在要写入的字符串后面加一个\n。
with open(r'G:\PythonProject\学习\学习文件\date\c.txt', mode='wt', encoding='utf-8') as f:
f.write('晓看天色暮看云\n')
现在再来运行一次。
看!这里换行就出现了。
注意,这不是在后面加了一个\n,而是w模式会在文件存的时候清空文件,所以治理不是直接在后面加了\n。
是清空之后重新写了内容。
我们新写的内容有换行符,如果我再写一个f.write(),里面再加一\n,会发生什么?
with open(r'G:\PythonProject\学习\学习文件\date\c.txt', mode='wt', encoding='utf-8') as f:
f.write('晓看天色暮看云\n')
f.write('唧唧复唧唧\n')
这个操作就不会清空原来的内容了,因为w模式只会在打开的时候清空文件内容,我们后面再来执行f.write()就会接着前面的内容继续写。
如果你想在w模式下继续写入内容,必须是再with的子代码下写才可以,或者说必须在文件关闭之前继续写才可以。
如果你分别融了两个with语法来写的话,只会出现最后一次写入的内容。
未经允许不得转载:445IT之家 » Python W模式