剛剛用open(filename)來開啟txt格式的檔案,總是出現錯誤,總是找不到檔案讀取的內容,後來才發現是open()在使用過程中自動關閉了。這裡介紹另種方法解決這個問題。
第一種方法。
with open(filename) as file_object:content=file_object.read()
其實就是將檔案物件儲存給file_object,然後將檔案內容讀取儲存給content,這種方法python會在程式不需要呼叫檔案時自動關閉檔案,不需要我們去呼叫close()來關閉檔案。
當我們過早的呼叫close()時,需要使用檔案時就會出現檔案無法呼叫的情況,所以不推薦自己使用open(),close()方式來開啟檔案。
第二種方法。
將檔案內容儲存到列表裡面,這樣就算檔案關閉了,我們直接訪問列表裡面儲存的檔案內容就可以了。
with open(filename) as file_name:lines=file_name.readlines()
for line in
lines:
print(line.rstrip())
用readlines()來將內容儲存到列表裡,並且通過逐行訪問列表內容來獲得檔案內容。
例子:
1defloaddata(filename):
2 datamat=;labelmat=
3 fr=open(filename)
4 datacontent=fr.readlines()5#
用乙個列表把檔案內容裝起來,否則用open開啟檔案後會自動關閉,在後面直接訪問fr時檔案已經關閉,獲取不到檔案了,6#
也可以用with open (filename) as fr:這種操作會根據檔案使用情況來自動關閉
7 featnum=len(datacontent[0].strip().split('
\t'))-1#
資料的屬性數量
8print
(featnum)
9for line in
datacontent:
10 linearr =
11 curline=line.strip().split('
\t')#
對每行資料分割成與屬性數相等的資料
12for i in
range(featnum):
1314
16return datamat,labelmat
如果我們去掉datacontent=fr.readlines()這一行內容,而一直用fr來不斷的呼叫檔案,會發現無法掉出資料,因為檔案在第一次使用後就關閉了,後面的檔案便無法呼叫出來。
python 開啟檔案 open
三 檔案讀寫定位操作 讀 f.read size 如果沒有size即f.read 一次性讀取檔案全部內容,返回型別str 如果有size即f.read 50 讀取最多的位元組內容 1.檔案很小,可一次性讀取,檔案較大,超過記憶體大小,內容爆掉 2.檔案過大,可用f.read size x為每次最多讀...
python 開啟檔案open和codecs區別
當我面有資料需要儲存時,第一時間一般會想到寫到乙個txt檔案中,當然,資料量比較大的時候還是寫到資料庫比較方便管理,需要進行網路傳輸時要序列化,json化。下面主要整理一下平時用的最多的寫入到檔案中,一般以txt結尾,linux裡不會以後綴來區分檔案型別,字尾可以隨便,也可以沒有。python讀寫檔...
使用open開啟FIFO檔案
include include include include include include include define fifo name tmp my fifo int main int argc,char argv argv if strncmp argv,o rdonly 8 0 ope...