讀取檔案
全部讀取
新建一個a.txt檔案,里面寫入如下三行:
aaa
bbb
ccc
python自動匯入了io模塊,我們可以直接使用open函式來打開檔案,得到檔案物件,然后呼叫物件的read方法獲取檔案內容,
file = open("a.txt") data = file.read() file.close() print(data)
列印結果:
aaa
bbb
ccc
通常,在程式退出時會自動關閉檔案物件,但是有可能我們的程式運行時間長呢,也就占用了檔案鎖,并且寫入檔案的時候,檔案內容會被放入緩沖區以提高效率,此時如果程式未運行完就報錯了,那么寫入的內容實際上是不會寫入檔案的,所以關閉檔案沒有壞處,應該要養成用完就關的習慣,
為了保證檔案一定能關閉,程式員一般的做法是使用例外捕獲的方式處理,而python給我們提供了便利的寫法 :with背景關系管理器
with open("a.txt") as file: data = file.read() print(data)
注意一點,如果檔案之中有中文,可能會出現檔案是utf-8格式的情況,這種情況下read方法讀取中文內容就會報錯,需要打開檔案的時候指定編碼:
with open("a.txt",encoding='utf-8') as file: data = file.read() print(data)
逐行讀取
逐行讀取有三種寫法,第一種是檔案迭代器,直接遍歷打開的檔案物件
with open("a.txt") as file: for line in file: print(line.rstrip())
列印結果:
aaa
bbb
ccc
進行rstrip過濾是因為每一行的末尾都隱藏的有回車換行,
第二種是使用readline方法每次讀取一行
with open("a.txt") as file: while True: data = file.readline() if not data: break print(data.rstrip())
列印結果:
aaa
bbb
ccc
第三種用readlines方法將檔案所有內容取出裝入一個串列中,然后遍歷串列
with open("a.txt") as file: lines = file.readlines() for data in lines: print(data.rstrip())
列印結果:
aaa
bbb
ccc
寫入檔案
寫入檔案要在打開檔案的時候提供第二個引數表明已什么方式打開,讀取檔案內容的時候是沒有傳入引數的,實際上是默認為讀模式,
with open("b.txt",'w') as file: file.write('aaa')
引數常用有如下幾種:
r:讀模式
w:寫模式
x:獨占寫模式
a:追加寫模式 以這種模式打開檔案后 指標會放到檔案的末尾
b:二進制模式
+:讀寫模式 必須和其他模式搭配使用 如r+(指標在開頭,先讀后寫)、a+(指標在末尾,可讀追加寫)、w+(指標在開頭,覆寫寫讀)
需要介紹的是r+和w+的區別,都是讀寫,但不一樣的是指標的位置
r+模式指標在檔案開頭,讀一行指標走一行,如果讀完之后再寫入,指標就到了檔案末尾,那么寫入的內容就是追加的,如果先寫入,那么就是覆寫的,
比如現在b.txt里面有4個字符:
abcd
那么我先寫后讀:
with open("b.txt",'r+') as file: file.write('x') file.write('y') file.seek(0) print(file.read())
列印結果:
xycd
可以看到,寫入了兩個字符,就是覆寫了前兩個字符,后面的字符仍然沒變,seek(0)是操作指標回到開頭,要不然只會列印出后面的cd兩個字符,
w+是全截斷覆寫寫,也就是把檔案當做一個空白檔案新寫東西,無論檔案里面有啥,讀出來的都是空,
把b.txt的內容恢復成abcd四個字符,
with open("b.txt",'w+') as file: print(file.read()) file.write('x') file.write('y') file.seek(0) print(file.read())
列印結果:
xy
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86777.html
標籤:Python
上一篇:找出檔案夾里所有的檔案路徑
下一篇:面試題16.11跳水板
