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

Python +模式

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

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

我們前面說(shuō)+號(hào)不能單獨(dú)使用,必須配合r、w、a,同時(shí)它也受限于r、w、a。

r+

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

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

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

直接報(bào)錯(cuò)了。

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

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

這樣是沒(méi)問(wèn)題的。

原來(lái)r模式是不可寫的,現(xiàn)在我在后面寫一個(gè)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('嘿嘿嘿')

然后我們來(lái)運(yùn)行一下,看看什么情況。

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

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

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

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

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

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

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

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

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

w+

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

來(lái)驗(yàn)證一下,直接把上面這個(gè)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ù)就肯定沒(méi)有了。

什么都沒(méi)有打印出來(lái),再來(lái)看txt文件。

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

然后我在前面寫點(diǎn)東西吧。

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)

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

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

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

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

a+

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

因?yàn)槲募羔樤谀┪?,還是要控制文件指針移動(dòng)才可以。

這里就不具體的演示了。

+號(hào)模式我們了解就行了,一般我們都不會(huì)用到。

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

贊 (0) 打賞

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

支付寶掃一掃打賞

微信掃一掃打賞