【代碼世界 No.2】Python學習筆記 #2 - 讀取文本文件(.txt)的幾種方式
????????利用Python讀取文本格式文件(.txt)的時候,存在多種方式進行讀取,需要根據(jù)業(yè)務和數(shù)據(jù)特點來選擇。本篇對比幾種簡單常用的讀取方式。

數(shù)據(jù)文件
???? 要打開的文本文件名稱為 “?數(shù)據(jù)文本文件 ”,和 python文件 - readtxt.py?放置在同一個目錄下,文件中的內(nèi)容如下:

????比較方便的方式是直接打開文件,保存為一個對象,然后逐行讀取。
? ??其中,open()是打開要讀取的文件,r?表示只讀方式打開,encoding為編碼。
????這里用 with?的方法打開,不用再進行close()關(guān)閉文件的操作了,返回的fobj是一段數(shù)據(jù)對象,可以對其進行讀取等操作。


????????從結(jié)果發(fā)現(xiàn)每行下面多了一行空行,因為輸出時會自動添加一個換行符,解決辦法是對每一行消除右邊的換行符,即 改為print(line.rstrip())。

一、read、readlines和readline
這三個都是Python自帶的 I/O?接口。? ??
1)read()?可以直接讀取整個文件,返回的是字符串類型。


????2)readlines() 也是一次性讀取整個文件,并其保存為一個列表,其中的每一行就是列表中的一項。這種方法對于特別大型的文件缺點是會多占用一些內(nèi)存。
?????????因為是列表,如果知道要提取的行數(shù)的話,可以用 readlines()[10:50]讀取特定行數(shù)內(nèi)容(10-49行)。


????3) readline() 可逐行讀取文件,好處是內(nèi)存占用小,缺點是速度會慢(但是一般正常大小的文件感覺不出來區(qū)別),由于是逐行讀取,所以要想遍歷讀文件的話,需要用循環(huán)結(jié)構(gòu)語句來操作。


????????????上面這幾個方法中如果不需要隔一行顯示,可用rstrip()來去掉換行符。
二、linecache
????linecache()是Python自帶的一個模塊,使用前需要引用這個模塊,其中 getline("文件“ , 行數(shù)) 可以讀取特定行的數(shù)據(jù),需要注意的是從0開始計數(shù)的,因此 下方的 第四行,其實提取的是文件中第5行的數(shù)據(jù)。


三、枚舉?enumerate
????????利用枚舉方式,可以逐行的獲取行號和內(nèi)容



????除了上面這幾種基本方式外,數(shù)據(jù)分析的時候還可以用pandas的模塊read_csv()讀取。
Tips:
打開文件時候的幾個常用標識符:
r :? ?讀取文件,文件不存在會報錯
w:? ?寫入文件,若文件不存在則會先創(chuàng)建再寫入,會覆蓋原文件
a :? ?寫入文件,若文件不存在則會先創(chuàng)建再寫入,不會覆蓋原文件,追加在文件末尾
rb,wb:? 用于讀寫二進制文件,例如圖像、音頻視頻等。