App下載

python怎么讀取文件?如何優(yōu)化?

猿友 2021-05-24 17:57:48 瀏覽數(shù) (2991)
反饋

在 python 的高級(jí)使用中,常常涉及到讀寫(xiě)文件。讀寫(xiě)文件是各類(lèi)編程語(yǔ)言中都很常見(jiàn)的 IO 操作。python 內(nèi)置了讀寫(xiě)文件的函數(shù),使用這些函數(shù)可以快速的對(duì)文件內(nèi)容進(jìn)行讀寫(xiě)。接下來(lái)就讓小編告訴你,python 怎么讀取文件吧。

打開(kāi)文件對(duì)象

使用? open() ?函數(shù)打開(kāi)文件對(duì)象。必須指定文件路徑??梢允褂孟鄬?duì)路徑,也可以使用絕對(duì)路徑??梢赃x擇傳入文件讀寫(xiě)方式,默認(rèn)為只讀方式??梢詡魅胛募幋a方式,默認(rèn)為 gbk 。

f =open('Zen.txt', 'r', encoding="utf-8")
#使用讀模式打開(kāi)一個(gè)文件對(duì)象,傳入?yún)?shù)為文件相對(duì)位置和讀寫(xiě)模式,編碼格式為utf-8

常用標(biāo)識(shí)符如下:

 r  以只讀方式打開(kāi)文件,從文件開(kāi)頭開(kāi)始讀取,沒(méi)有文件會(huì)報(bào)錯(cuò)。
 w  以只寫(xiě)方式打開(kāi)文件,如果沒(méi)有文件則新建一個(gè)文件,如果有文件則從頭開(kāi)始寫(xiě)這個(gè)文件。
 a  以追加方式打開(kāi)文件,如果沒(méi)有文件則新建一個(gè)文件,如果有文件則從文檔末尾開(kāi)始寫(xiě)這個(gè)文件。
 a+  可讀寫(xiě)模式,寫(xiě)只能寫(xiě)在文件末尾。
 w+  可讀寫(xiě),與a+的區(qū)別是要清空文件內(nèi)容。
 r+  可讀寫(xiě),與a+的區(qū)別是可以寫(xiě)到文件任何位置。

讀取文件內(nèi)容

讀取文件內(nèi)容可以用 ?read()? 的一系列函數(shù)進(jìn)行讀取,詳見(jiàn)代碼(需要文件讀寫(xiě)模式中可讀,即只寫(xiě)方式不能讀取文件)。

f =open('Zen.txt', 'r', encoding="utf-8")
#使用只讀模式打開(kāi)文件對(duì)象,文件編碼格式為utf-8
f.read()
#一次將文本讀取完畢,文件過(guò)大時(shí)容易溢出,可以指定文件大小
f.readline()
#一次讀取一行文本數(shù)據(jù),讀取速度較慢
f.readlines()
#一次將文本讀取完畢并按列生成字符串列表

寫(xiě)入文件內(nèi)容

寫(xiě)入文件內(nèi)容可以用 ?write()? 的一系列函數(shù)進(jìn)行寫(xiě)入,詳見(jiàn)代碼(需要文件模式中可寫(xiě),即只讀方式不能寫(xiě)入文件)。

f =open('Zen.txt', 'w', encoding="utf-8")
#使用只寫(xiě)模式打開(kāi)文件對(duì)象,文件編碼格式為utf-8
str = "The Zen of Python, by Tim Peters"
seq = {'Beautiful is better than ugly.','Explicit is better than implicit.','Simple is better than complex.'}
f.write(str)
#write()的參數(shù)是一個(gè)字符串,就是你要寫(xiě)入文件的內(nèi)容.
f.writelines(seq)
#writelines()的參數(shù)是序列,比如列表,它會(huì)迭代幫你寫(xiě)入文件。

關(guān)閉文件

文件使用完后必須關(guān)閉,因?yàn)槲募?duì)象會(huì)占用系統(tǒng)資源,使用? close()? 方法可以關(guān)閉文件。

f =open('Zen.txt', 'w', encoding="utf-8")
#使用只寫(xiě)模式打開(kāi)文件對(duì)象,文件編碼格式為utf-8
str = "The Zen of Python, by Tim Peters"
seq = {'Beautiful is better than ugly.','Explicit is better than implicit.','Simple is better than complex.'}
f.write(str)
#write()的參數(shù)是一個(gè)字符串,就是你要寫(xiě)入文件的內(nèi)容.
f.writelines(seq)
#writelines()的參數(shù)是序列,比如列表,它會(huì)迭代幫你寫(xiě)入文件。
f.close()

使用try -catch抓取IOError

由于文件讀寫(xiě)時(shí)都有可能產(chǎn)生 IOError,一旦出錯(cuò),后面的? f.close()? 就不會(huì)調(diào)用。所以,為了保證無(wú)論是否出錯(cuò)都能正確地關(guān)閉文件,我們可以使用?try -catch-finally?來(lái)實(shí)現(xiàn)。

try:
    f = open('zen.txt', 'r',encoding="utf-8")
    print(f.read())
finally:
#當(dāng)讀寫(xiě)產(chǎn)生IOError時(shí),使用finally將文件關(guān)閉
    if f:
        f.close()

使用 with 語(yǔ)句

使用 ?with? 語(yǔ)句可以幫我們調(diào)用 ?close()? 方法,這樣就不用寫(xiě) ?try-catch-finally? 語(yǔ)句了。

總結(jié)

python 提供了內(nèi)置的文件讀寫(xiě)函數(shù),利用這些函數(shù)我們可以快速的進(jìn)行文件的讀寫(xiě),以上就是 python 怎么讀取文件的全部?jī)?nèi)容,更多 python 文件讀寫(xiě)知識(shí)盡在 python菜鳥(niǎo)教程。


0 人點(diǎn)贊