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

Python 文件指針

前面我們說(shuō)r模式下,文件指針會(huì)跳到開(kāi)始位置,然后f.read(),就是把這個(gè)文件的內(nèi)容一次性全部從硬盤讀入到內(nèi)存了。

這時(shí)候如果文件過(guò)大,f.read()就會(huì)有問(wèn)題。如果這個(gè)文件幾十個(gè)G,你還能用f.read()嗎?

r模式下,f.read()是文佳指針從開(kāi)頭讀到結(jié)尾,整個(gè)文件都給你度到內(nèi)存里面來(lái),內(nèi)存一下就給占滿了,這樣的話32G內(nèi)存都不夠你用的。

當(dāng)然文件小的話這樣做沒(méi)問(wèn)題,文件大的話就不行了。

現(xiàn)在我把讀到的內(nèi)容復(fù)制給res1,然后再打印一下res1.

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

接著我再用f.read()來(lái)讀一次。

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

		res2=f.read()
		print(res2)

為了區(qū)分一下兩次讀寫的內(nèi)容,我在前面打印一下分隔符,center功能,80個(gè)字符用橫杠填充。

然后第二次讀我也這么打印一下。

with open(r'G:\PythonProject\學(xué)習(xí)\學(xué)習(xí)文件\date\a.txt', mode='rt', encoding='utf-8') as f:
    ...
    print('第一次讀'.center(80,'-'))
    res1 = f.read()
    print(res1)
    print('第二次讀'.center(80,'-'))
    res2 = f.read()
    print(res2)

現(xiàn)在我要運(yùn)行這個(gè)程序的話會(huì)發(fā)生什么?我們先來(lái)分析一下,f.read()前面是說(shuō)過(guò),讀完后文件指針在末尾了。

第二次讀,的時(shí)候文件指針就已經(jīng)在末尾了 ,就什么也讀不到。

我們來(lái)運(yùn)行看看是不是分析的結(jié)果。

結(jié)果和我們分析的一樣。

所以只要我們呢個(gè)夠控制這個(gè)文件指針的移動(dòng)是不是就可以隨性所欲想讀哪段內(nèi)容就可以讀哪段內(nèi)容了。

也可以避免r模式下的f.read()會(huì)一次性把整個(gè)文件內(nèi)容讀入內(nèi)存,造成內(nèi)存被占滿的問(wèn)題。

控制文件指針是我們后面要講的,現(xiàn)在還有一個(gè)點(diǎn)你要注意。

你注意看,第一次讀完之后,有個(gè)換行。

為什么呢?我們的文件內(nèi)容不就是‘你好我喜歡你’這句話嗎?來(lái)看這個(gè)文件內(nèi)容。

這個(gè)文件里面本來(lái)就有個(gè)換行符,也就是說(shuō)\n,雖然這個(gè)\n我們看不見(jiàn),但是我們讀文件的時(shí)候這個(gè)\n也是會(huì)讀進(jìn)去的。

未經(jīng)允許不得轉(zhuǎn)載:445IT之家 » Python 文件指針

贊 (0) 打賞

相關(guān)推薦

    暫無(wú)內(nèi)容!

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞