1.讀寫檔案是最常見的io操作。python內建了讀寫檔案的函式,用法和c是相容的。
2.要以讀檔案的模式開啟乙個檔案物件,使用python內建的open()函式,傳入檔名和標示符:如f = open('/users/michael/test.txt', 'r')
r是讀的意思 可以用w寫來替換。files需要帶上檔案的路徑哦,如files=r'g:/test/file1.txt'
3.如果檔案不存在,open()函式就會丟擲乙個ioerror的錯誤,並且給出錯誤碼和詳細的資訊告訴你檔案不存在例子如下:
f=open('/users/michael/notfound.txt', 'r')
traceback (most recent call last):
file "", line 1, in filenotfounderror: [errno 2] no such file or directory: '/users/michael/notfound.txt'
4.如果檔案open成功了,接下來我們需要呼叫read()
方法將檔案讀取到記憶體中,用乙個str
物件來表示`
5.注意在使用read()的時候如果檔案過大會造成撐爆記憶體的,建議使用read(size)多次奪取
6.最後一步是呼叫close()方法關閉檔案。檔案使用完畢後必須關閉,因為檔案物件會占用作業系統的資源,並且作業系統同一時間能開啟的檔案數量也是有限的
f.close()
注意:由於檔案讀寫時都有可能產生ioerror,一旦出錯,後面的f.close()就不會呼叫。所以,為了保證無論是否出錯都能正確地關閉檔案,我們可以使用try … finally來實現:
7.注意我們更多的是使用 with open(file,r)
為什麼呢因為可以省略close(),使用with open() 會主動幫我們關閉
8.我們來說說 readline() 與 readlines()的區別
readline() 每次只讀取一行,而 readlines() 一行一行的是讀取所有的檔案放在乙個list 返回
9.寫檔案 使用 write()
10.要讀取非utf-8編碼的文字檔案,需要給open()函式傳入encoding引數,例如,讀取gbk編碼的檔案:
>>
> f =
open
('/users/michael/gbk.txt'
,'r'
, encoding=
'gbk'
)>>
> f.read(
)
11.總結:以後讀寫檔案都使用with open語句,不要再像以前那樣用f = open()這種語句了
對於多個檔案的讀寫,可以寫成以下兩種方式:
with
open
('/home/xbwang/desktop/output_measures.txt'
,'r'
)as f:
open
('/home/xbwang/desktop/output_measures2.txt'
,'r'
)as f1:
open
('/home/xbwang/desktop/output_output_bk.txt'
,'r'
)as f2:..
....
....
....
....
....
..
或者
with
open
('/home/xbwang/desktop/output_measures.txt'
,'r'
)as f:..
....
..with
open
('/home/xbwang/desktop/output_measures2.txt'
,'r'
)as f1:..
....
..with
open
('/home/xbwang/desktop/output_output_bk.txt'
,'r')as
....
....f2:
Python之檔案的讀寫
讀檔案 f.read size 預設讀取整個檔案,放進記憶體中,如果給size穿乙個大小,則讀size個位元組 f.readline 讀取一行,一行一行地讀 f.readlines 讀取整個檔案,封裝成乙個列表中,占用空間 模式 r r 如果沒有改檔案,則報錯filenotfounderror,寫的...
python之讀寫檔案
fr open readfile.txt r fw open writefile.txt w print fr.readline print fr.tell print fr.readlines fw.write write line fw.close fr.seek 0,0 第乙個引數代表位元組數...
Python之檔案讀寫
本文介紹python語言中的對於檔案的讀寫等操作。本文使用python3 首先是對檔案的操作流程為 1.開啟檔案,得到檔案控制代碼並賦值給乙個變數 2.通過控制代碼對檔案進行操作 3.關閉檔案 對於檔案的操作就離不開open 函式 這個函式是python的io模組中的乙個內建函式 首先建議使用hel...