鍍金池/ 教程/ Python/ python linecache 模塊讀取文件用法詳解
通過 memcached 實(shí)現(xiàn)領(lǐng)號排隊(duì)功能及 python 隊(duì)列實(shí)例
利用 pypy 提高 python 腳本的執(zhí)行速度及測試性能
Python FAQ3-python 中 的原始(raw)字符串
Mongodb 千萬級數(shù)據(jù)在 python 下的綜合壓力測試及應(yīng)用探討
Parallel Python 實(shí)現(xiàn)程序的并行多 cpu 多核利用【pp 模塊】
python simplejson 模塊淺談
服務(wù)端 socket 開發(fā)之多線程和 gevent 框架并發(fā)測試[python 語言]
python Howto 之 logging 模塊
python 之 MySQLdb 庫的使用
關(guān)于 python 調(diào)用 zabbix api 接口的自動化實(shí)例 [結(jié)合 saltstack]
python 之利用 PIL 庫實(shí)現(xiàn)頁面的圖片驗(yàn)證碼及縮略圖
Python 通過 amqp 消息隊(duì)列協(xié)議中的 Qpid 實(shí)現(xiàn)數(shù)據(jù)通信
python 中用 string.maketrans 和 translate 巧妙替換字符串
python linecache 模塊讀取文件用法詳解
Python 批量更新 nginx 配置文件
python 計(jì)算文件的行數(shù)和讀取某一行內(nèi)容的實(shí)現(xiàn)方法
python+Django 實(shí)現(xiàn) Nagios 自動化添加監(jiān)控項(xiàng)目
多套方案來提高 python web 框架的并發(fā)處理能力
python 寫報警程序中的聲音實(shí)現(xiàn) winsound
python 調(diào)用 zabbix 的 api 接口添加主機(jī)、查詢組、主機(jī)、模板
對 Python-memcache 分布式散列和調(diào)用的實(shí)現(xiàn)
使用 python 構(gòu)建基于 hadoop 的 mapreduce 日志分析平臺
一個腳本講述 python 語言的基礎(chǔ)規(guī)范,適合初學(xué)者
Python 編寫的 socket 服務(wù)器和客戶端
如何將 Mac OS X10.9 下的 Python2.7 升級到最新的 Python3.3
python 監(jiān)控文件或目錄變化
報警監(jiān)控平臺擴(kuò)展功能 url 回調(diào)的設(shè)計(jì)及應(yīng)用 [python 語言]
Python 處理 cassandra 升級后的回滾腳本
python 實(shí)現(xiàn) select 和 epoll 模型 socket 網(wǎng)絡(luò)編程
關(guān)于 B+tree (附 python 模擬代碼)
通過 python 和 websocket 構(gòu)建實(shí)時通信系統(tǒng)[擴(kuò)展 saltstack 監(jiān)控]

python linecache 模塊讀取文件用法詳解

linecache 模塊允許從任何文件里得到任何的行,并且使用緩存進(jìn)行優(yōu)化,常見的情況是從單個文件讀取多行。

linecache.getlines(filename)
從名為 filename 的文件中得到全部內(nèi)容,輸出為列表格式,以文件每行為列表中的一個元素,并以 linenum-1 為元素在列表中的位置存儲

linecache.getline(filename,lineno)
從名為 filename 的文件中得到第 lineno 行。這個函數(shù)從不會拋出一個異常–產(chǎn)生錯誤時它將返回”(換行符將包含在找到的行里)。
如果文件沒有找到,這個函數(shù)將會在 sys.path 搜索。

linecache.clearcache()
清除緩存。如果你不再需要先前從 getline() 中得到的行

linecache.checkcache(filename)
檢查緩存的有效性。如果在緩存中的文件在硬盤上發(fā)生了變化,并且你需要更新版本,使用這個函數(shù)。如果省略 filename,將檢查緩存里的所有條目。

linecache.updatecache(filename)
更新文件名為 filename 的緩存。如果 filename 文件更新了,使用這個函數(shù)可以更新 linecache.getlines(filename)返回的列表。

用法舉例:

# cat a.txt
1a
2b
3c
4d
5e
6f
7g

1、獲取 a.txt 文件的內(nèi)容

>>> a=linecache.getlines('a.txt')
>>> a
['1a\n', '2b\n', '3c\n', '4d\n', '5e\n', '6f\n', '7g\n']

2、獲取 a.txt 文件中第 1-4 行的內(nèi)容

>>> a=linecache.getlines('a.txt')[0:4]
>>> a
['1a\n', '2b\n', '3c\n', '4d\n']

3、獲取 a.txt 文件中第4行的內(nèi)容

>>> a=linecache.getline('a.txt',4)
>>> a
'4d\n'

注意:使用 linecache.getlines('a.txt') 打開文件的內(nèi)容之后,如果 a.txt 文件發(fā)生了改變,如你再次用 linecache.getlines 獲取的內(nèi)容,不是文件的最新內(nèi)容,還是之前的內(nèi)容,此時有兩種方法:

  1. 使用 linecache.checkcache(filename) 來更新文件在硬盤上的緩存,然后在執(zhí)行 linecache.getlines('a.txt') 就可以獲取到 a.txt 的最新內(nèi)容;
  2. 直接使用 linecache.updatecache('a.txt'),即可獲取最新的 a.txt 的最新內(nèi)容

另:讀取文件之后你不需要使用文件的緩存時需要在最后清理一下緩存,使 linecache.clearcache() 清理緩存,釋放緩存。

這個模塊是使用內(nèi)存來緩存你的文件內(nèi)容,所以需要耗費(fèi)內(nèi)存,打開文件的大小和打開速度和你的內(nèi)存大小有關(guān)系。