2012年11月8日 星期四

[ Python 範例代碼 ] 使用 linecache 從文件中讀取指定的行

來源自 這裡 
Preface: 
你想根據給出的行號,從文本文件中讀取一行數據. 而 Python 標準庫 linecache 模塊非常適合這個任務: 
  1. import linecache    
  2. theline  =  linecache .getline(thefilepath, desired_line_number)  
套件說明: 
對這個任務而言,標準的 linecache 模塊是Python能夠提供的最佳解決工具。當你想要對文件中的某些行進行多次讀取時,linecache 特別有用,因為它會緩存一些信息以避免重複一些工作。當你不需要從緩存中獲得行數據時,可以調用模塊的 c​​learcache 函數來釋放被用作緩存的內存。當磁盤上的文件發生了變化時,還可以調用checkcache,以確保緩存中存儲的是最新的信息. 

linecache 讀取並緩存你指定名字的文件中的所有文本,所以,如果文件非常大,而你只需要其中一行,為此使用linecache 則顯得不是那麼必要. 如果這部分可能是你的程序的瓶頸,可以使用顯式的循環,並將其封裝在一個函數中,這樣可以獲得速度上的一些提升,像這樣: 
  1. def getline(thefilepath, desired_line_number):    
  2.       if desired_line_number  <  1:  return ''    
  3.       for current_line_number, line in    
  4. enumerate(open(thefilepath, 'rU')):    
  5.             if  current_line_number  ==    
  6. desired_line_number-1return line    
  7.       return ''  
唯一需要注意的細節是 enumerate 從0開始計數,因此,既然我們假設desired_line_ number 參數從1開始計算,需要在用 == 比較的時候減去1! 

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...