Python開啟檔案open()的注意事項

來源:互聯網
上載者:User

標籤:body   推薦   獲得   readlines   操作   例子   pre   strip()   列表   

剛剛用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()來將內容儲存到列表裡,並且通過逐行訪問列表內容來獲得檔案內容。

例子:

 1 def loadData(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#資料的屬性數量 8     print(featNum) 9     for line in dataContent:10         lineArr = []11         curLine=line.strip().split(‘\t‘)#對每行資料分割成與屬性數相等的資料12         for i in range(featNum):13             lineArr.append(float(curLine[i]))14         dataMat.append(lineArr)15         labelMat.append(float(curLine[-1]))16     return dataMat,labelMat

如果我們去掉dataContent=fr.readlines()這一行內容,而一直用fr來不斷的調用檔案,會發現無法掉出資料,因為檔案在第一次使用後就關閉了,後面的檔案便無法調用出來。

 

Python開啟檔案open()的注意事項

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.