摘要:今天分享一個(gè)的小模塊可以用它方便地獲取某一文件某一行的內(nèi)容。而且它也被模塊用來獲取相關(guān)源碼信息來展示。用法很簡單第一參數(shù)是文件名,第二個(gè)參數(shù)是行編號。如果請求的行數(shù)超過文件行數(shù),函數(shù)不會報(bào)錯(cuò),而是返回空字符串。
linecache
今天分享一個(gè)python的小模塊: linecache, 可以用它方便地獲取某一文件某一行的內(nèi)容。而且它也被 traceback 模塊用來獲取相關(guān)源碼信息來展示。
用法很簡單:
>>> import linecache >>> linecache.getline("/etc/passwd", 4) "sys:x:3:3:sys:/dev:/bin/sh "
linecache.getline 第一參數(shù)是文件名,第二個(gè)參數(shù)是行編號。如果文件名不能直接找到的話,會從 sys.path 里找。
如果請求的行數(shù)超過文件行數(shù),函數(shù)不會報(bào)錯(cuò),而是返回""空字符串。
如果文件不存在,函數(shù)也不會報(bào)錯(cuò),也返回""空字符串。
linecache 會嘗試用緩存一些信息來優(yōu)化對文件的讀取。它還提供了兩個(gè)方法來處理緩存相關(guān)。
linecache.clearcache() # 清除不再需要的linecache.getcache()獲取的內(nèi)容 linecache.checkcache([filename]) # 檢查文件在硬盤上是否有更新,如果有更新緩存。 # 如果沒有提供文件名參數(shù),則檢查linecache緩存里所有的條目其它
當(dāng)文件很大而只要讀取其中一行時(shí),如果采用linecache成為程序的瓶頸,也可以采用如下方法來獲得速度上一些提升:
def get_line(thefilepath, desired_line_number): if desired_line_number < 1: return "" for current_line_number, line in enumerate(open(thefilepath, "rU")): if current_line_number == desired_line_number -1: return line return ""
ps: 打開文件的方式"rU"是以一種windows,mac,unix三個(gè)平臺同一的方式打開,都讀取成 n, 參照這里。
參考資料https://docs.python.org/2/lib...
《Python Cookbook》Chapter2.4
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/44299.html
摘要:項(xiàng)目的一個(gè)需求是解析的日志文件。項(xiàng)目中已經(jīng)按照業(yè)務(wù)規(guī)則對日志文件進(jìn)行了處理命名規(guī)則如下并且所有的日志文件存放在統(tǒng)一路徑下。模塊使用緩存,所以會耗費(fèi)內(nèi)存,耗費(fèi)量與要解析的文件相關(guān)。剩下的工作就是根據(jù)業(yè)務(wù)需要,對獲得的基本信息進(jìn)行處理。 項(xiàng)目的一個(gè)需求是解析nginx的日志文件。 簡單的整理如下: 日志規(guī)則描述 首先要明確自己的Nginx的日志格式,這里采用默認(rèn)Nginx日志格式: ...
摘要:項(xiàng)目的一個(gè)需求是解析的日志文件。項(xiàng)目中已經(jīng)按照業(yè)務(wù)規(guī)則對日志文件進(jìn)行了處理命名規(guī)則如下并且所有的日志文件存放在統(tǒng)一路徑下。模塊使用緩存,所以會耗費(fèi)內(nèi)存,耗費(fèi)量與要解析的文件相關(guān)。剩下的工作就是根據(jù)業(yè)務(wù)需要,對獲得的基本信息進(jìn)行處理。 項(xiàng)目的一個(gè)需求是解析nginx的日志文件。 簡單的整理如下: 日志規(guī)則描述 首先要明確自己的Nginx的日志格式,這里采用默認(rèn)Nginx日志格式: ...
摘要:轉(zhuǎn)自程序員的資料庫最流行的模塊庫大全收藏下面的列表是最流行的模塊庫,該資源列表列出了使用頻率最高的模塊庫,是學(xué)習(xí)最好的資源之一,趕緊收藏吧 轉(zhuǎn)自:程序員的資料庫-最流行的Python模塊庫大全【收藏】 下面的列表是最流行的Python模塊庫,該P(yáng)ython資源列表列出了使用頻率最高的Python模塊庫,是學(xué)習(xí)Python最好的資源之一,趕緊收藏吧??! os (2810) ...
摘要:例如等價(jià)于到結(jié)束,但不包括。例如返回沒有每次跳躍的間距,默認(rèn)為。 異常處理 單個(gè)異常處理: try: print(num) except NameError: print(沒有定義變量) except FileNotFoundError: print(找不到文件路徑) print(1) 多個(gè)異常處理: try: print(num) # 1...
摘要:的模塊其實(shí)就是封裝了一個(gè)或者多個(gè)功能的代碼集合,以便于重用,模塊可以是一個(gè)文件也可以是一個(gè)目錄,目錄的形式稱作包。已經(jīng)導(dǎo)入的模塊會保存在字典中。 Python的模塊其實(shí)就是封裝了一個(gè)或者多個(gè)功能的代碼集合,以便于重用,模塊可以是一個(gè)文件也可以是一個(gè)目錄,目錄的形式稱作包。 模塊分類 內(nèi)置模塊 內(nèi)置模塊可以理解成當(dāng)你安裝好python環(huán)境之后,直接可以使用import導(dǎo)入的就是內(nèi)置模塊,...
閱讀 1896·2021-11-11 16:55
閱讀 2106·2021-10-08 10:13
閱讀 755·2019-08-30 11:01
閱讀 2166·2019-08-29 13:19
閱讀 3293·2019-08-28 18:18
閱讀 2631·2019-08-26 13:26
閱讀 588·2019-08-26 11:40
閱讀 1879·2019-08-23 17:17