在 python 的高級使用中,常常涉及到讀寫文件。讀寫文件是各類編程語言中都很常見的 IO 操作。python 內(nèi)置了讀寫文件的函數(shù),使用這些函數(shù)可以快速的對文件內(nèi)容進(jìn)行讀寫。接下來就讓小編告訴你,python 怎么讀取文件吧。
打開文件對象
使用? open()
?函數(shù)打開文件對象。必須指定文件路徑??梢允褂孟鄬β窂剑部梢允褂媒^對路徑??梢赃x擇傳入文件讀寫方式,默認(rèn)為只讀方式??梢詡魅胛募幋a方式,默認(rèn)為 gbk 。
f =open('Zen.txt', 'r', encoding="utf-8")
#使用讀模式打開一個文件對象,傳入?yún)?shù)為文件相對位置和讀寫模式,編碼格式為utf-8
常用標(biāo)識符如下:
r | 以只讀方式打開文件,從文件開頭開始讀取,沒有文件會報錯。 |
w | 以只寫方式打開文件,如果沒有文件則新建一個文件,如果有文件則從頭開始寫這個文件。 |
a | 以追加方式打開文件,如果沒有文件則新建一個文件,如果有文件則從文檔末尾開始寫這個文件。 |
a+ | 可讀寫模式,寫只能寫在文件末尾。 |
w+ | 可讀寫,與a+的區(qū)別是要清空文件內(nèi)容。 |
r+ | 可讀寫,與a+的區(qū)別是可以寫到文件任何位置。 |
讀取文件內(nèi)容
讀取文件內(nèi)容可以用 ?read()
? 的一系列函數(shù)進(jìn)行讀取,詳見代碼(需要文件讀寫模式中可讀,即只寫方式不能讀取文件)。
f =open('Zen.txt', 'r', encoding="utf-8")
#使用只讀模式打開文件對象,文件編碼格式為utf-8
f.read()
#一次將文本讀取完畢,文件過大時容易溢出,可以指定文件大小
f.readline()
#一次讀取一行文本數(shù)據(jù),讀取速度較慢
f.readlines()
#一次將文本讀取完畢并按列生成字符串列表
寫入文件內(nèi)容
寫入文件內(nèi)容可以用 ?write()
? 的一系列函數(shù)進(jìn)行寫入,詳見代碼(需要文件模式中可寫,即只讀方式不能寫入文件)。
f =open('Zen.txt', 'w', encoding="utf-8")
#使用只寫模式打開文件對象,文件編碼格式為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ù)是一個字符串,就是你要寫入文件的內(nèi)容.
f.writelines(seq)
#writelines()的參數(shù)是序列,比如列表,它會迭代幫你寫入文件。
關(guān)閉文件
文件使用完后必須關(guān)閉,因?yàn)槲募ο髸加孟到y(tǒng)資源,使用? close()
? 方法可以關(guān)閉文件。
f =open('Zen.txt', 'w', encoding="utf-8")
#使用只寫模式打開文件對象,文件編碼格式為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ù)是一個字符串,就是你要寫入文件的內(nèi)容.
f.writelines(seq)
#writelines()的參數(shù)是序列,比如列表,它會迭代幫你寫入文件。
f.close()
使用try -catch抓取IOError
由于文件讀寫時都有可能產(chǎn)生 IOError,一旦出錯,后面的? f.close()
? 就不會調(diào)用。所以,為了保證無論是否出錯都能正確地關(guān)閉文件,我們可以使用?try -catch-finally
?來實(shí)現(xiàn)。
try:
f = open('zen.txt', 'r',encoding="utf-8")
print(f.read())
finally:
#當(dāng)讀寫產(chǎn)生IOError時,使用finally將文件關(guān)閉
if f:
f.close()
使用 with 語句
使用 ?with
? 語句可以幫我們調(diào)用 ?close()
? 方法,這樣就不用寫 ?try-catch-finally
? 語句了。
總結(jié)
python 提供了內(nèi)置的文件讀寫函數(shù),利用這些函數(shù)我們可以快速的進(jìn)行文件的讀寫,以上就是 python 怎么讀取文件的全部內(nèi)容,更多 python 文件讀寫知識盡在 python菜鳥教程。