python中readline判斷文件讀取結束實例

大家知道,python中按行讀取文件可以使用readline函數,下面寫一個按行遍曆讀取文件的方法,通過這個方法,引入我們要討論的問題。

代碼如下

filename = raw_input('Enter your file name') #輸入要遍曆讀取的文件路徑及文件名
file = open(filename,'r')
done = 0
while not done:
aLine = file.readline()
if(aLine != ''):
print aLine,
else:
done = 1
file.close() #關閉文件

上面是我們經常看到的按行遍曆一個文件方法,你可能已經注意到我在代碼中寫的if(aLine != '' ):部分。當readline讀取到爲空的時候,意味著讀到了文件的結束。這個時候,問題就在這裏,很多人會想,是不是遇到一個空行,也會被認爲是文件的結束呢?這就引入了標題的問題。

事實上,文件的空白行並不會返回一個空行。因爲在每一行的末尾還有一個或者多個分隔符,因此“空白行”至少會有一個換行符或者系統使用的其他符號。所以,即使文件中真的包含一個“空白行”,讀入的行也不是空的,這就意味著在真實遍曆讀取到文件結束之前,程序實際上是不會停止的


readline() 和 .readlines() 非常相似。它們都在類似于以下的結構中使用:

Python .readlines()

示例

代碼如下
fh = open('c:\autoexec.bat')
for line in fh.readlines():
print line


.readline() 和 .readlines() 之間的差異是後者一次讀取整個文件,象 .read() 一樣。.readlines() 自動將文件內容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結構進行處理。另一方面,.readline() 每次唯讀取一行,通常比 .readlines() 慢得多。僅當沒有足夠記憶體可以一次讀取整個文件時,才應該使用 .readline()。

readlines返回行數問題

官方文檔這樣寫的 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.

確實是指定大小啊並且會受內部緩沖區大小影響向上取整到內部緩沖區大小。內部緩沖區大約是8k也難怪我每次測試文件大小都是8k(8192)倍數

代碼如下

#!/usr/bin/env python

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))

更多相關文章
  • mongodb也是一種輕型的數據庫,下面我來介紹java與mongodb數據庫的應用,包括寫,讀取,保存mongodb數據庫的實例,各位朋友有需要可參考.下面的例子是把User對象插入到Mongodb中,並讀出來 代碼如下 User.java:package com.mongo; public cl ...
  • 下面我來介紹一個Zend Framework中如何判斷URL是否設置了轉發,有需要學習的朋友可參考.發送HTTP請求: 代碼如下 $client = new Zend_Http_Client(); $client->setUri($url); $client->setConfig(arr ...
  • 在寫程序時發現在判斷文件是否存在時,有兩種寫法,有的人用了is_file,有的人用了file_exists,用哪個更好或者說更合適呢?判斷文件存在用is_file還是file_exists?在寫程序時發現在判斷文件是
  • nginx上try_files是後面的nginx版本才有的一個功能了,下面小編來給大家介紹利用nginx上try_files 判斷文件是否存在,希望此文章對大家有所幫助.try_files 是nginx0.6.36
  • webtail 能夠持續讀取一個文件,並將文件內容通過websocket,及時推送到web端.webtail文件讀取基于linux的inotify,所以沒有可移植性.文件讀取先介紹下背景,之前遇到過伺服器上需要長時間tail一個日志,之前經常是通過一個終端連到伺服器上,但是對于長時間觀察,就不太方便
  • 虛擬機安裝win10報錯Windows無法從無人參與應答文件讀取ProductKey設置解決辦法
    虛擬機是在系統中安裝系統了它中是一個虛擬的東西了,一般的操作系統都是支持虛擬機下安裝了,但win10系統在虛擬機安裝提示"Windows無法從無人參與應答文件讀取ProductKey設置"錯誤了,對于這個問題我們來看解決辦法.在小編在虛擬機中安裝win10系統時會報如下所示&qu ...
  • 在上傳文件時經常要判斷文件夾是否存在,如果存在就上傳文件,否則新建文件夾再上傳文件語法大概這樣string dir="d:xxxyyy"if (system.io.directory.exists(dir)){ // 存在}else{ // 不存在}下面來看一下詳細代碼判斷語句爲 ...
  • 本文章講了三個實例是利用java對zip 壓縮文件的讀寫操作,實例如下.創建一個zip壓縮文件import java.io.fileinputstream;import java.io.fileoutputstream;import java.util.zip.zipentry;import jav ...
一周排行
  • 下面給各位介紹一個Memcached分布式部署方案設計(含PHP代碼),有需要了解的朋友不防進來看看一台Memcache通常不能滿足我們的需求,這就需要分布式部署.Memcached分布式部署方案通常會采用兩種方式,
  • 本文章來爲各位介紹一篇關于linux 讓ssh只允許指定的用戶登錄的權限設置的方法,希望這個例子能夠對各位同學會帶來幫助,具體操作如下所示.方法一,只允許ssh指定用戶登錄權限的設置SSH遠程登錄的權限直接影響伺服器
  • 今天白天才架起PHPStorm+xdebug的調試環境,就遇到了各式各樣的問題:訪問超慢回應.訪問超快回應但是是空白頁. 問題A解決的方法很多,總歸還有解決辦法:問題B我估計是線程問題,也許可以通過調試php.ini
  • ppt演示文檔中插入Flash的多種方法
    本文章介紹了三種關于在ppt中導入我們做好的flash動畫或視頻的方法,每步都非常的簡單實 ...
  • 三星E7手機不能連接電腦怎麽辦E7000連接電腦的教程
    有朋友問三星E7手機不能連接電腦怎麽辦?這個問題我們可以從多方面來分析,因爲朋友是女生又是 ...
  • 三星Note3 如何將SIM卡中的聯系人導入手機(N9008S)
    下面本文章以三星N9008S手機爲例子來把手機SIM卡上原有的聯系人直接導入到手機中去,這
  • 回應式web設計實現圖片效果10款jQuery插件
    這是本人收藏的10款回應式 jQuery實現圖片效果插件,好東西要拿出來分享,現在把這些推 ...
  • centos中配置xcache給php加速
    下面本文章來給各位同學介紹關于centos中配置xcache給php加速,我們以前會使用很 ...
  • APC擴展是php的一個PHP緩存擴展了,全英文名字爲Alternative PHP Cache (APC) , 我們可以在伺服器上安裝apc來提高WEB伺服器的效能哦,下面來給各位介紹在linux中安裝APC擴展方
  • 我要做的效果就是當我們打開頁面時就自動把所有checkbox選中,原理是:先獲取所有type爲\'input \'的元素,然後各全選的那個選項添加點擊事件.如果全選項被經被選中,則通過循環使得每個元素的\'check