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

python 計(jì)算文件的行數(shù)和讀取某一行內(nèi)容的實(shí)現(xiàn)方法

一、計(jì)算文件的行數(shù)

最簡(jiǎn)單的辦法是把文件讀入一個(gè)大的列表中,然后統(tǒng)計(jì)列表的長(zhǎng)度.如果文件的路徑是以參數(shù)的形式filepath傳遞的,那么只用一行代碼就可以完成我們的需求了:

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

如果是非常大的文件,上面的方法可能很慢,甚至失效.此時(shí),可以使用循環(huán)來(lái)處理:

count = -1
for count, line in enumerate(open(thefilepath, 'rU')):
    pass
count += 1

另外一種處理大文件比較快的方法是統(tǒng)計(jì)文件中換行符的個(gè)數(shù) '\n '(或者包含 '\n' 的字串,如在 windows 系統(tǒng)中):

count = 0
thefile = open(thefilepath, 'rb')
while True:
    buffer = thefile.read(8192*1024)
    if not buffer:
        break
    count += buffer.count('\n')
thefile.close( )

參數(shù) 'rb' 是必須的,否則在 windows 系統(tǒng)上,上面的代碼會(huì)非常慢.

linecache 是專門支持讀取大文件,而且支持行式讀取的函數(shù)庫(kù)。 linecache 預(yù)先把文件讀入緩存起來(lái),后面如果你訪問(wèn)該文件的話就不再?gòu)挠脖P讀取

二、讀取文件某一行的內(nèi)容(測(cè)試過(guò) 1 G 大小的文件,效率還可以)

import linecache
count = linecache.getline(filename,linenum)

三、用 linecache 讀取文件內(nèi)容(測(cè)試過(guò) 1 G 大小的文件,效率還可以)

str = linecache.getlines(filename)

str 為列表形式,每一行為列表中的一個(gè)元素