Python零碎知識(3):對檔案的基本操作

來源:互聯網
上載者:User

一、概述

Python內建函數open,用來開啟在磁碟上的檔案,並返回一個檔案對象,所有對該檔案的後續操作都是通過這個"控制代碼"來進行的,檔案方法可分:輸入、輸出、檔案內移動、和其他等。

1.開啟檔案

open 方法可以接收三個參數:檔案名稱,模式,和緩衝區參數。只有第一個參數,檔案名稱,是必須的;其它兩個是 可選的。如果沒有指定,檔案以文本方式開啟。

1 f=open('demo.txt','w')2 print f.name    3 print f.demo4 5 name屬性;檔案名稱6 demo屬性;檔案以何種模式被開啟    

2.關閉檔案

開啟檔案消耗系統資源, 並且依賴於檔案模式, 其它程式或許不能訪問它們。這就是一旦操作完畢就該關閉檔案的重要所在。

1 f.close()2 f.closed    #輸出True,表示檔案關閉狀態3 4 #如果檔案已經關閉,則可操作開啟檔案的方法都不能用,5 f.seek()  6 f.tell()7 f.read()8 f.close()

 

二、理解讀取檔案
例如 我們來讀取這個檔案 all.py

 1 ''' 2 Created on 2013-3-7 3  4 @author: Administrator 5 ''' 6 def info(object, spacing=10, collapse=1):    7     """Print methods and doc strings. 8      9     Takes module, class, list, dictionary, or string."""10     methodList = [method for method in dir(object) if callable(getattr(object, method))]11     processFunc = collapse and (lambda s: " ".join(s.split())) or (lambda s: s)12     print "\n".join(["%s %s" %13                       (method.ljust(spacing),14                        processFunc(str(getattr(object, method).__doc__)))15                      for method in methodList])16 17 if __name__ == "__main__":                 18     print info.__doc__

對上述檔案作業碼如下:

 1 #coding=utf-8 2 ''' 3 Created on 2013-3-7 4  5 @author: Administrator 6 ''' 7 f=open("all.py","rb")   #open接收三個參數,檔案名稱、模式、緩衝區參數 8 print f.tell()          #開啟檔案的當前位置,因為我們還沒有對該檔案做任何事,故當前位置為0,表示檔案的開始處 9 f.seek(10,0)            #檔案對象的seek方法,表示在開啟檔案中移動到另一個位置10 print f.tell()              11 tagData=f.read(10)      #read 方法從開啟檔案中讀取指定個數的位元組,並且返回含有讀取資料的字串12 print tagData13 print f.tell()          #tell 方法確認了當前位置已經移動了14 -------------15   輸出如下: 
0
10
ed on 2013
20

理解:這一系列操作好像是我們首先開啟記事本時,游標立馬在記事本的左上方(0)處停留,這就對應著一開始的open之後的tell()。如果我們想要移動游標的位置,如從一開始移動到10個字元,我們可以用seek(10,0)表示,然後在tell(),發現游標已經定位到10了,然後從第10處開始讀取10個字元,我們可以使用read(10)

三、寫入檔案:

Python的open方法用來開啟一個檔案。第一個參數是檔案的位置和檔案名稱,第二個參數是讀寫入模式。

1.寫:w (write)  | a (append)
2.讀:r
3.二進位(binary ): 寫:wb;讀:rb 

 1 在檔案中儲存和恢複Python對象 2 使用Python的pickle模組,可以將Python對象直接儲存在檔案中,並且可以再以後需要的時候重新恢複到內容中。 3  4  5 #coding=utf-8 6 ''' 7 Created on 2013-3-7 8  9 @author: Administrator10 '''11 file=open("pickle.txt","w")12 import pickle13 dict={"name":"BeginMan","age":"22"}14 pickle.dump(dict, file)15 file.close()16 17 test=open("pickle.txt","r")18 print pickle.load(test)19 test.close()

 四、I/O異常處理

在對檔案的操作中以下這些可以引發IOError異常:

1.檔案不存在,使用open('....','r')開啟讀取一個不存在的檔案引發異常。

2.檔案長度小於指定長度(如:n)時,使用seek(n),則引發異常

3.檔案損壞,磁碟損壞時read(),引發異常

 

對此我們需要進行異常處理,如下:

 1 try: 2     f=open('d.txt','r') 3     try: 4         f.seek(100,2) 5         fshow=f.read(1000) 6     finally: 7         f.close() 8  9     except IOError:10     pass

第一步:開啟檔案時try處理
第二步:在第一步的基礎上,檔案操作時try處理
第三步:一定要記著操作完成後關閉檔案,在finally中完成
最後一步:except IOError:...............對異常進行處理

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.