其他關(guān)于Python的總結(jié)文章請訪問:http://www.reibang.com/nb/47435944
Python中的文件讀寫詳解-read罪治、readline、readlines雁社、write、writelines霉撵、with as語句詳解
打開文件
Python使用open
語句打開文件,傳入文件的(路徑)名稱徒坡,還有兩個重要的參數(shù)瘤缩,一個是文件處理模式(第二個參數(shù)),一個是編碼方式(encoding=''
):
file = open("text.txt",'r',encoding='utf-8')
打開文件后剥啤,可以使用
-
file.mode
:獲取文件對應(yīng)的處理模式 -
file.name
:獲取文件的名字
其中比較重要的參數(shù)是文件的處理模式,(編碼方式一般可以忽略府怯,保持默認即可),默認是'r'
牺丙,根據(jù)讀寫來自行傳入,比較常用的是如下幾個參數(shù):
-
'r'
(默認值):讀文件 -
'w'
:寫入文件粟判,如果文件已經(jīng)有內(nèi)容了肖揣,就覆蓋原來的內(nèi)容 -
'a'
:在文件后追加浮入,不會覆蓋原來的內(nèi)容 -
'r+'
:讀、寫文件羊异,初始時光標位于文件開頭事秀,不會覆蓋原內(nèi)容,而且不會創(chuàng)建新文件野舶,必須打開已有文件 -
'w+'
:讀易迹、寫文件,寫入時平道,如果文件已經(jīng)有內(nèi)容了睹欲,就覆蓋原來的內(nèi)容 -
'a+'
:讀、寫文件一屋,寫入時窘疮,在文件后追加,不會覆蓋原來的內(nèi)容
詳細的對比可以看這個表格:
表格引用自菜鳥教程:https://www.runoob.com/python/python-files-io.html
模式 | r | r+ | w | w+ | a | a+ |
---|---|---|---|---|---|---|
讀 | + | + | + | + | ||
寫 | + | + | + | + | + | |
創(chuàng)建 | + | + | + | + | ||
覆蓋 | + | + | ||||
指針在開始 | + | + | + | + | ||
指針在結(jié)尾 | + | + |
關(guān)閉文件
在使用完文件后冀墨,通常需要使用close
方法關(guān)閉文件以清理資源:
file.close()
讀取文件
全部讀取
使用read()
方法讀取文件中的所有內(nèi)容:
file = open('text.txt')
content = file.read()
print(content)
file.close()
逐行讀取闸衫,全部保存
使用readlines()
方法將文件內(nèi)容逐行讀出诽嘉,保存到一個列表中蔚出,每一行保存成一個元素:
file = open('text.txt')
lines = file.readlines()
for line in lines:
print(line)
file.close()
逐行讀取,每次一行
使用readline()
方法可以將文件中的內(nèi)容逐行讀取虫腋,每次調(diào)用返回一行骄酗,所以需要遍歷來讀取全部內(nèi)容,但是占用內(nèi)存最小悦冀,因為不是將文件中的所有內(nèi)容一次讀出:
file = open('text.txt')
line = file.readline()
while line:
print(line)
line = file.readline()
file.close()
寫入文件
使用字符串寫入
使用write()
方法像文件中寫入一個字符串趋翻,字符串中可以包括換行符(\n
)等來設(shè)置換行等:
file = open('text.txt', 'w')
file.write("hello world 1\nhello world 2")
file.close()
使用可迭代對象寫入
使用writelines()
方法可以傳入一個序列(list
、tuple
雏门、set
等可迭代對象)嘿歌,然后序列中的每一個元素依次寫入文件中(注意,換行需要自己寫入茁影,writelines
不會幫你自動換行宙帝,即不會將元素單獨成行寫入,比如下邊例子中的第一個元素末尾的\n
符號):
file = open('text.txt', 'w')
content = ['hello world 1\n', 'hello world 2']
file.writelines(content)
file.close()
使用with…as…語句處理文件
其實一種更好(更優(yōu)雅)的方式是使用with…as…
的語句來處理文件募闲,這樣你不必再寫close
的代碼手動關(guān)閉文件步脓,它會在使用完畢后自動為你清理文件所占用的內(nèi)存,只要將open
語句寫在with
后邊,然后原來作為open
返回值的遍歷寫給as
即可:
file = open('text.txt', 'w')
等價于:
with open('text.txt', 'w') as file:
當然靴患,處理文件的內(nèi)容應(yīng)該寫在 with as
語句的語句塊中