python處理大文件


問題:有一個比較大的文件,從幾M到1G,如何快速獲取其中的某一行?

解決方式:

如下,采用for in文件迭代器的方式,在加一個行計數器即可。禁止采用f.readline()的方式,readline效率極其低下,readlines對內存消耗過大。

 

def fn(which_line):
    f = open("abc.txt", "rt")
    counter = 0    
    for line in f:
        counter += 1
        if which_line == counter:
            print("find this line:{}".format(line))
            break    

 

問題:python讀取文件時,如何判斷文件是否到了末尾?

解決方式:

1)判斷line的內容是否為空,即 if line == "", 則認為已經到了文件末尾,原因是空格實際也存在換行符。

2)捕獲特定異常StopIteration。原因是在遍歷的時候,我們不知道什么時候會跳出循環,

跳出循環后,我們可以給循環外部加一個   next(f)    語句,用異常捕獲語句處理此行代碼,如果捕獲到了,則說明肯定到了文件末尾

def fn():
    f = open("abc.txt", "rt")
    for line in f:
        print(line)

    try:
        next(f)
        # 此處前后可加其他處理語句
    except StopIteration:
        is_file_end = True
    except Exception as e:
        pass
    finally:
     if f:
            f.close()
       do something else  

注意: StopIteration捕獲語句必須在Exception之前,因為StopIteration繼承了Exception

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM