python中readline判斷文件讀取結(jié)束的方法
本文實例講述了python中readline判斷文件讀取結(jié)束的方法。分享給大家供大家參考。具體分析如下:
大家知道,python中按行讀取文件可以使用readline函數(shù),下面現(xiàn)介紹一個按行遍歷讀取文件的方法,通過這個方法,展開我們要討論的問題:
file = open(filename,'r')
done = 0
while not done:
aLine = file.readline()
if(aLine != ''):
print aLine,
else:
done = 1
file.close() #關(guān)閉文件
上面是我們經(jīng)??吹降陌葱斜闅v一個文件方法,你可能已經(jīng)注意到我在代碼中寫的if(aLine != '' ):部分。當(dāng)readline讀取到為空的時候,意味著讀到了文件的結(jié)束。這個時候,問題就在這里,很多人會想,是不是遇到一個空行,也會被認(rèn)為是文件的結(jié)束呢?這就引入了標(biāo)題的問題。
事實上,文件的空白行并不會返回一個空行。因為在每一行的末尾還有一個或者多個分隔符,因此“空白行”至少會有一個換行符或者系統(tǒng)使用的其他符號。所以,即使文件中真的包含一個“空白行”,讀入的行也不是空的,這就意味著在真實遍歷讀取到文件結(jié)束之前,程序?qū)嶋H上是不會停止的
readline() 和 .readlines() 非常相似。它們都在類似于以下的結(jié)構(gòu)中使用:
Python .readlines()
示例如下:
for line in fh.readlines():
print line
.readline() 和 .readlines() 之間的差異是后者一次讀取整個文件,象 .read() 一樣。.readlines() 自動將文件內(nèi)容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結(jié)構(gòu)進行處理。另一方面,.readline() 每次只讀取一行,通常比 .readlines() 慢得多。僅當(dāng)沒有足夠內(nèi)存可以一次讀取整個文件時,才應(yīng)該使用 .readline()。
readlines返回行數(shù)問題
官方文檔這樣寫的:
If the optional sizehint argument is present, instead of reading up to EOF, whole lines totalling approximately sizehint bytes (possibly after rounding up to an internal buffer size) are read.
確實是指定大小啊并且會受內(nèi)部緩沖區(qū)大小影響向上取整到內(nèi)部緩沖區(qū)大小。內(nèi)部緩沖區(qū)大約是8k也難怪我每次測試文件大小都是8k(8192)倍數(shù)
f=open('a.txt').readlines(1)
open('b.txt','w').writelines(f)
open('c.txt','w').writelines(open('a.txt').readlines(200))
open('d.txt','w').writelines(open('a.txt').readlines(9200))
open('e.txt','w').writelines(open('a.txt').readlines(26000))
open('f.txt','w').writelines(open('a.txt').readlines(40000))
希望本文所述對大家的Python程序設(shè)計有所幫助。
相關(guān)文章
Appium+Python自動化環(huán)境搭建實例教程
這篇文章主要介紹了Appium+Python自動化環(huán)境搭建實例教程,本文通過實例代碼圖文相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08
一文解密Python中_getattr_和_getattribute_的用法與區(qū)別
這篇文章主要為大家詳細(xì)介紹了Python中_getattr_和_getattribute_的用法與區(qū)別,文中通過一些簡單的示例為大家進行了講解,需要的可以參考一下2023-01-01
python構(gòu)造icmp echo請求和實現(xiàn)網(wǎng)絡(luò)探測器功能代碼分享
本文分享了二個python示例,python構(gòu)造icmp echo請求、實現(xiàn)網(wǎng)絡(luò)探測器功能代碼,類似nmap功能2014-01-01
Python常見錯誤:IndexError:?list?index?out?of?range解決
最近在寫一個爬蟲程序,但是卻出現(xiàn)了錯誤提示IndexError:?list?index?out?of?range,所以下面這篇文章主要給大家介紹了關(guān)于Python常見錯誤:IndexError:?list?index?out?of?range的解決方法,需要的朋友可以參考下2023-01-01

