接下來我們看w模式,w模式就是只寫模式。
我們以前研究r模式的時候我們知道,r模式在文件不存在的時候會報錯,文件存在的時候問價指針會跳到開始位置。
我們還是按照同樣的套路,我們來看w模式下文件不存在會發(fā)生什么。
我寫一個不存在的文件c.txt,然后子代碼我就先寫一個pass。
with open(r'G:\PythonProject\學習\學習文件\date\c.txt', mode='wt', encoding='utf-8') as f:
pass
然后看左邊的文件夾列表,看到是沒有c.txt的。
現(xiàn)在我一運行,左邊就出現(xiàn)了。
所以說w模式下,如果文件路徑不存在,就會創(chuàng)建一個空白文件。毫無疑問,文件指針也是位于開始位置。
既然文件路徑不存在就會創(chuàng)建空白文件,那如果文件路徑存在會發(fā)什么呢?
現(xiàn)在我在這個c.txt里面寫點內容,然后多復制幾行。
我們不保存的話,pycharm也會幫我們自動保存的。
現(xiàn)在這個c.txt是存在的對吧,而且里面也有內容,然后我再來運行一次這個代碼。
現(xiàn)在看好像沒什么異常,但是當我們打開c.txt的時候看到剛剛里面寫的全部不見了。
所以說w模式下,當文件存在的時候會清空文件內容,然后文件指針也會停在開始位置。
所以你千萬不要用w模式打開你重要的文件,只要你用w模式打開了,你的文件也報廢了。
現(xiàn)在我在子代碼塊里嘗試一下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。
這樣就把數(shù)據(jù)寫進去了。
你注意看這個文件,是沒有換行的,如果想換行的話,就得在要寫入的字符串后面加一個\n。
with open(r'G:\PythonProject\學習\學習文件\date\c.txt', mode='wt', encoding='utf-8') as f:
f.write('曉看天色暮看云\n')
現(xiàn)在再來運行一次。
看!這里換行就出現(xiàn)了。
注意,這不是在后面加了一個\n,而是w模式會在文件存的時候清空文件,所以治理不是直接在后面加了\n。
是清空之后重新寫了內容。
我們新寫的內容有換行符,如果我再寫一個f.write(),里面再加一\n,會發(fā)生什么?
with open(r'G:\PythonProject\學習\學習文件\date\c.txt', mode='wt', encoding='utf-8') as f:
f.write('曉看天色暮看云\n')
f.write('唧唧復唧唧\n')
這個操作就不會清空原來的內容了,因為w模式只會在打開的時候清空文件內容,我們后面再來執(zhí)行f.write()就會接著前面的內容繼續(xù)寫。
如果你想在w模式下繼續(xù)寫入內容,必須是再with的子代碼下寫才可以,或者說必須在文件關閉之前繼續(xù)寫才可以。
如果你分別融了兩個with語法來寫的話,只會出現(xiàn)最后一次寫入的內容。
未經(jīng)允許不得轉載:445IT之家 » Python W模式