一、計算檔案的行數

   最簡單的辦法是把檔案讀入一個大的列表中,然後統計列表的長度.如果檔案的路徑是以引數的形式filepath傳遞的,那麼只用一行程式碼就可以完成我們的需求了:

count = len(open(filepath,`rU`).readlines())

   如果是非常大的檔案,上面的方法可能很慢,甚至失效.此時,可以使用迴圈來處理:

count = -1
for count, line in enumerate(open(thefilepath, `rU`)):
<wbr><wbr><wbr><wbr><wbr><wbr>    pass
count += 1

   另外一種處理大檔案比較快的方法是統計檔案中換行符的個數`
 `(或者包含`
`的字串,如在windows系統中):

count = 0
thefile = open(thefilepath, `rb`)
while True:
<wbr><wbr><wbr><wbr><wbr><wbr>    buffer = thefile.read(8192*1024)
<wbr><wbr><wbr><wbr><wbr><wbr>    if not buffer:
<wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr><wbr>        break
<wbr><wbr><wbr><wbr><wbr><wbr>    count += buffer.count(`
`)

thefile.close( )

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

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

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

import linecache

count = linecache.getline(filename,linenum)

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

str = linecache.getlines(filename)

str為列表形式,每一行為列表中的一個元素