1. 程式人生 > >Python 例項一 統計指定檔案的行數或讀取指定檔案指定行數的內容

Python 例項一 統計指定檔案的行數或讀取指定檔案指定行數的內容

一. 基礎知識

統計指定檔案的行數,必須先開啟讀取檔案內容,用到open/檔案操作: f=open('/tmp/hello','w') #open(路徑+檔名,讀寫模式) #讀寫模式:r只讀,r+讀寫,w新建(會覆蓋原有檔案),a追加,b二進位制檔案.常用模式 如:'rb','wb','r+b'等等

讀寫模式的型別有:

rU 或 Ua 以讀方式開啟, 同時提供通用換行符支援 (PEP 278) w     以寫方式開啟, a     以追加模式開啟 (從 EOF 開始, 必要時建立新檔案) r+     以讀寫模式開啟 w+     以讀寫模式開啟 (參見 w ) a+     以讀寫模式開啟 (參見 a ) rb     以二進位制讀模式開啟 wb     以二進位制寫模式開啟 (參見 w ) ab     以二進位制追加模式開啟 (參見 a ) rb+    以二進位制讀寫模式開啟 (參見 r+ ) wb+    以二進位制讀寫模式開啟 (參見 w+ ) ab+    以二進位制讀寫模式開啟 (參見 a+ )

二. 統計檔案行數示例: 1.(小檔案) pycharm 開發環境中新建#coding=utf-8 count = len(open('F:\test\test.txt','rU').readlines()) print(count) 上述程式碼是讀取F:\test\test.txt路徑下的test.txt檔案的內容行數 並在console終端打印出行數 2.(大檔案)如果是非常大的檔案,上面的方法可能很慢,甚至失效.此時,可以使用迴圈來處理:
#coding=utf-8
count = -1
for count, line in enumerate(open('F:\daiqinge\dai.txt','rU').readlines()):
    pass
    count+=1
print(count)

其中pass語句的意思是空操作,什麼也不做

3. (大檔案)另外一種處理大檔案的方法(統計了換行符的個數)
#coding=utf-8
count = 0
thefile = open('F:\daiqinge\dai.txt', 'rb')
while True:
    buffer = thefile.read(8192*1024)
    if not buffer:
        break
    count += buffer.count('\n')
thefile.close( )
print(count+1)

引數'rb'是必須的,否則在windows系統上,上面的程式碼會非常慢

三. 讀取指定檔案的內容
(大檔案)linecache是專門支援讀取大檔案,而且支援行式讀取的函式庫。 linecache預先把檔案讀入快取起來,後面如果你訪問該檔案的話就不再從硬碟讀取

1. 讀取檔案某一行的內容(測試過1G大小的檔案,效率還可以)

#coding=utf-8
import linecache
count = linecache.getline('F:\daiqinge\dai.txt',2)
print(count)

讀取檔案第2行的內容

2. 讀取指定檔案的全部內容

用linecache讀取檔案內容(測試過1G大小的檔案,效率還可以)

#coding=utf-8
import linecache
content = linecache.getlines('F:\daiqinge\dai.txt')
print(content)
content為列表形式,每一行為列表中的一個元素