最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python with statement 進(jìn)行文件操作指南

 更新時間:2014年08月22日 09:40:36   投稿:hebedich  
在Python中,with關(guān)鍵字是一個替你管理實現(xiàn)上下文協(xié)議對象的好東西。例如:file等。在file的結(jié)束,會自動關(guān)閉該文件句柄。而這正是本文所需要的

由于之前有一個項目老是要打開文件,然后用pickle.load(file),再處理。。。最后要關(guān)閉文件,所以覺得有點繁瑣,代碼也不簡潔。所以向python with statement尋求解決方法。

在網(wǎng)上看到一篇文章:http://effbot.org/zone/python-with-statement.htm是介紹with 的,參考著例子進(jìn)行了理解。

如果經(jīng)常有這么一些代碼段的話,可以用一下幾種方法改進(jìn):

代碼段:

set thing up
try:
  do something
except :
  handle exception
finally:
  tear thing down

案例1:

假如現(xiàn)在要實現(xiàn)這么一個功能,就是打開文件,從文件里面讀取數(shù)據(jù),然后打印到終端,之后關(guān)閉文件。

那么從邏輯上來說,可以抽取“打印到終端”為數(shù)據(jù)處理部分,應(yīng)該可以獨(dú)立開來作為一個函數(shù)。其他像打開、關(guān)閉文件應(yīng)該是一起的。

文件名為:for_test.txt

方法1:

用函數(shù),把公共的部分抽取出來。
 

#!/usr/bin/env python 
from __future__ import with_statement  
filename = 'for_test.txt' 
def output(content): 
  print content 
#functio solution 
def controlled_execution(func): 
  #prepare thing 
  f = None 
  try: 
    #set thing up 
    f = open(filename, 'r') 
    content = f.read() 
    if not callable(func): 
      return 
    #deal with thing  
    func(content) 
  except IOError, e: 
    print 'Error %s' % str(e) 
  finally: 
    if f:  
      #tear thing down 
      f.close() 
def test(): 
  controlled_execution(output) 
test() 

 
方法2:

用yield實現(xiàn)一個只產(chǎn)生一項的generator。通過for - in 來循環(huán)。

代碼片段如下:

#yield solution 
def controlled_execution(): 
  f = None 
  try: 
    f = open(filename, 'r') 
    thing = f.read() 
    #for thing in f: 
    yield thing 
  except IOError,e: 
    print 'Error %s' % str(e) 
  finally: 
    if f:  
      f.close() 
def test2(): 
  for content in controlled_execution(): 
    output(content) 

 

方法3:

用類的方式加上with實現(xiàn)。

代碼片段如下:
 

#class solution 
class controlled_execution(object): 
  def __init__(self): 
    self.f = None 
  def __enter__(self): 
    try: 
      f = open(filename, 'r') 
      content = f.read() 
      return content 
    except IOError ,e: 
      print 'Error %s' % str(e) 
      #return None 
  def __exit__(self, type, value, traceback): 
    if self.f: 
      print 'type:%s, value:%s, traceback:%s' % \ 
          (str(type), str(value), str(traceback)) 
      self.f.close() 
def test3(): 
  with controlled_execution() as thing: 
    if thing: 
      output(thing) 
 

方法4:

用with實現(xiàn)。不過沒有exception handle 的功能。

def test4(): 
  with open(filename, 'r') as f: 
    output(f.read()) 
 
  print f.read() 

 最后一句print是用來測試f是否已經(jīng)被關(guān)閉了。

    最后總結(jié)一下,寫這篇文章的目的主要是受了一句話的刺激:“使用語言的好特性,不要使用那些糟糕的特性”!python真是有很多很優(yōu)雅的好特性,路漫漫其修遠(yuǎn)兮,吾將上下而求索。。。

相關(guān)文章

  • python判斷文件夾內(nèi)是否存在指定后綴文件的實例

    python判斷文件夾內(nèi)是否存在指定后綴文件的實例

    今天小編就為大家分享一篇python判斷文件夾內(nèi)是否存在指定后綴文件的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 利用Python判斷文件的幾種方法及其優(yōu)劣對比

    利用Python判斷文件的幾種方法及其優(yōu)劣對比

    任何的編程語言都離不開文件操作,文件操作主要是幫助我們更好的創(chuàng)建打開文件,讀取文件中的內(nèi)容、或是把我們想要保存的內(nèi)容寫入文件中、或是管理文件目錄等等,下面這篇文章主要給大家介紹了關(guān)于利用Python判斷文件的幾種方法及其優(yōu)劣對比的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • 如何利用Python實現(xiàn)給Excel表格截圖

    如何利用Python實現(xiàn)給Excel表格截圖

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)給Excel表格截圖功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-02-02
  • Python學(xué)習(xí)之圖片濾鏡效果的實現(xiàn)

    Python學(xué)習(xí)之圖片濾鏡效果的實現(xiàn)

    濾鏡效果是圖像處理中常用的一種技術(shù),可以用來增強(qiáng)圖像的視覺效果,實現(xiàn)不同的效果,本文就來利用Python中的Image模塊實現(xiàn)常見的幾個圖片濾鏡吧
    2023-05-05
  • Qt實現(xiàn)炫酷啟動圖動態(tài)進(jìn)度條效果

    Qt實現(xiàn)炫酷啟動圖動態(tài)進(jìn)度條效果

    最近接到一個新需求,讓做一個動效進(jìn)度條。剛接手這個項目真的不知所措,后來慢慢理清思路,問題迎刃而解,下面小編通過本文給大家?guī)砹薗t實現(xiàn)炫酷啟動圖動態(tài)進(jìn)度條效果,感興趣的朋友一起看看吧
    2021-11-11
  • Python編程中歸并排序算法的實現(xiàn)步驟詳解

    Python編程中歸并排序算法的實現(xiàn)步驟詳解

    這篇文章主要介紹了Python編程中歸并排序算法的實現(xiàn)步驟詳解,歸并排序的平均時間復(fù)雜度為(n\log n),需要的朋友可以參考下
    2016-05-05
  • Python實現(xiàn)刪除list列表重復(fù)元素的方法總結(jié)

    Python實現(xiàn)刪除list列表重復(fù)元素的方法總結(jié)

    在Python編程中,我們經(jīng)常需要處理列表中的重復(fù)元素,這篇文章為大家介紹了五種高效的方法來刪除列表中的重復(fù)元素,希望對大家有所幫助
    2023-07-07
  • pycharm中選中一個單詞替換所有重復(fù)單詞的實現(xiàn)方法

    pycharm中選中一個單詞替換所有重復(fù)單詞的實現(xiàn)方法

    這篇文章主要介紹了pycharm中選中一個單詞替換所有重復(fù)單詞的實現(xiàn)方法,類似于sublime 里的ctrl+D功能,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2020-11-11
  • 分享4個方便且好用的Python自動化腳本

    分享4個方便且好用的Python自動化腳本

    自動化測試是把以人為驅(qū)動的測試行為轉(zhuǎn)化為機(jī)器執(zhí)行的一種過程,直白的就是為了節(jié)省人力、時間或硬件資源,提高測試效率,這篇文章主要給大家分享介紹了3個方便且好用的Python自動化腳本,需要的朋友可以參考下
    2022-02-02
  • 詳解Python自動化中這八大元素定位

    詳解Python自動化中這八大元素定位

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著Python自動化中這八大元素定位展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06

最新評論

威宁| 达州市| 阆中市| 霍山县| 宜宾县| 巩留县| 嘉义县| 瑞安市| 奈曼旗| 榆树市| 漯河市| 昂仁县| 乌兰浩特市| 建宁县| 祥云县| 米林县| 广宁县| 綦江县| 黑水县| 大余县| 樟树市| 霍城县| 资阳市| 遂昌县| 通辽市| 武冈市| 龙井市| 大化| 合阳县| 仁怀市| 岱山县| 恭城| 大英县| 甘德县| 彭水| 河池市| 元氏县| 濮阳市| 安国市| 南陵县| 德庆县|