久久久精品2019免费观看_亚洲国产精品成人久久久_69国产成人综合久久精品91_国产精品久久精品视

Python +模式

r、w、a我們說是只讀,只寫和追加。

現(xiàn)在我們來看+模式,它可以給r、w、a這三種模式賦予新的功能,就是讓它們可讀可寫。

我們前面說+號不能單獨使用,必須配合r、w、a,同時它也受限于r、w、a。

r+

我們先來看r+,如果文件不存在的時候會發(fā)生什么。

with open (r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\e.txt', mode='rt+', encoding='utf-8') as f:
				pass

最后就用pass代替了,雖然r+是可讀可寫,但它會議r為準(zhǔn)。如果文件不存在我們運行看看。

直接報錯了。

現(xiàn)在我把這個文件路徑改一下,改成d.txt。這個路徑是存在的。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\d.txt', mode='rt+', encoding='utf-8') as f:
    res = f.read()
    print(res)

這樣是沒問題的。

原來r模式是不可寫的,現(xiàn)在我在后面寫一個f.write(‘嘿嘿嘿’)。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\d.txt', mode='rt+', encoding='utf-8') as f:
    res = f.read()
    print(res)
    f.write('嘿嘿嘿')

然后我們來運行一下,看看什么情況。

嘿嘿嘿就出現(xiàn)在最后。原因就是r模式打開文件,文件指針會停在開始位置。

但是用read讀取內(nèi)容,會從文件指針當(dāng)前位置一直讀到文件末尾,就把整個文件內(nèi)容都讀出來,同時文件指針會更這跳到末尾去。

所以這個時候用write寫數(shù)據(jù)就會寫到末尾去。

現(xiàn)在我把中間的f.read注釋掉。然后再來運行。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\d.txt', mode='rt+', encoding='utf-8') as f:
    f.write('嘿嘿嘿')

‘嘿嘿嘿’就跑到開頭了。

同時r+還有一個效果就是它會把原來位置的內(nèi)容覆蓋掉。其實硬盤上也是一樣的,你往硬盤里寫數(shù)據(jù),硬盤里原來的數(shù)據(jù)他不會往后移動,而是會覆蓋原來的數(shù)據(jù)。

這也是為什么有的硬盤數(shù)據(jù)刪除了還可以恢復(fù),有的數(shù)據(jù)刪除了之后就恢復(fù)不了了。

如果你只是單純的刪掉文件了,并沒有在你原來的位置寫入新的數(shù)據(jù),數(shù)據(jù)就是可以恢復(fù)的,但是你已經(jīng)有新的數(shù)據(jù)覆蓋掉了,原來的數(shù)據(jù)就恢復(fù)不了了。

w+

我們接著看w+,它也是可讀可寫,但是它會以w為準(zhǔn),如果文件不存在,就會創(chuàng)建文件,如果文件存在,就會清空文件。

來驗證一下,直接把上面這個r改成w就行了。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\d.txt', mode='wt+', encoding='utf-8') as f:
    res = f.read()
    print(res)

先看f.read,d.txt里面是有數(shù)據(jù)的,w模式只要一打開文件里的數(shù)據(jù)就肯定沒有了。

什么都沒有打印出來,再來看txt文件。

文件里面也是清空了之前的數(shù)據(jù)。

然后我在前面寫點東西吧。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\d.txt', mode='wt+', encoding='utf-8') as f:
    f.write('abc\n')
    f.write('def\n')
    res = f.read()
    print(res)

這時候你覺得能讀到內(nèi)容嗎?

什么也讀不到,但是在txt文件里是有內(nèi)容的。

當(dāng)我們執(zhí)行完這個f.write之后,文件指針就已經(jīng)停在了文件末尾,所以這個時候再f.read是讀不到任何內(nèi)容的。

如果你就想讀到文件里的內(nèi)容,你要用到后面講的控制文件指針的方法了。

a+

最后a+的話就會以a為準(zhǔn),文件不存在就會創(chuàng)建文件,文件存在文件指針就會跳到末尾,所以用a+模式打開,雖然也是可讀可寫,但也是讀不到數(shù)據(jù)的。

因為文件指針在末尾,還是要控制文件指針移動才可以。

這里就不具體的演示了。

+號模式我們了解就行了,一般我們都不會用到。

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python +模式

贊 (0) 打賞

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞