python進階七_檔案操作(一)

來源:互聯網
上載者:User

一.  基本檔案操作1.   檔案操作基本概況

在python中,檔案對象時內建類型file的執行個體,內建函數open會建立並返回一個檔案對象。函數原型 fp = open(“test.txt”,”r”),在這裡讀和寫的唯一用法區別是第二個參數問題,也即open的開啟模式。

我們來看一個簡單的例子:



對於open的開啟模式,可以有一下這些:

r            以讀方式開啟

w     以寫方式開啟,

a     以追加模式開啟 (從 EOF 開始, 必要時建立新檔案)

r+     以讀寫入模式開啟

w+     以讀寫入模式開啟 (參見 w )

a+     以讀寫入模式開啟 (參見 a )

rb     以二進位讀模式開啟

wb     以二進位寫入模式開啟 (參見 w )

ab     以二進位追加模式開啟 (參見 a )

rb+    以二進位讀寫入模式開啟 (參見 r+ )

wb+    以二進位讀寫入模式開啟 (參見 w+ )

ab+    以二進位讀寫入模式開啟 (參見 a+ )

對於檔案對象fp有很多內建函數,常見的有這麼些:

                os.mknod("test.txt")

                   #建立空檔案

fp.read([size])   

 #size為讀取的長度,以byte為單位

fp.readline([size])

#讀一行,如果定義了size,有可能返回的只是一行的一部分

fp.readlines([size]) 

#把檔案每一行作為一個list的一個成員,並返回這個list。其實它的內部是通過迴圈調用readline()來實現的。如果提供size參數,size是表示讀取內容的總長,也就是說可能唯讀到檔案的一部分。

fp.write(str)

#把str寫到檔案中,write()並不會在str後加上一個分行符號

fp.writelines(seq)           

#把seq的內容全部寫到檔案中(多行一次性寫入)。這個函數也只是忠實地寫入,不會在每行後面加上任何東西。

fp.close()                 

#關閉檔案。python會在一個檔案不用後自動關閉檔案,不過這一功能沒有保證,最好還是養成自己關閉的習慣。  如果一個檔案在關閉後還對其進行操作會產生ValueError

fp.flush()                             

#把緩衝區的內容寫入硬碟

fp.fileno()       

#返回一個長整型的”檔案標籤“

fp.isatty()                                     

#檔案是否是一個終端裝置檔案(unix系統中的)

fp.tell()                                        

#返迴文件操作標記的當前位置,以檔案的開頭為原點

fp.next()                                      

#返回下一行,並將檔案操作標記位移到下一行。把一個file用於for … in file這樣的語句時,就是調用next()函數來實現遍曆的。

fp.seek(offset[,whence])             

#將檔案打操作標記移到offset的位置。這個offset一般是相對於檔案的開頭來計算的,一般為正數。但如果提供了whence參數就不一定了,whence可以為0表示從頭開始計算,1表示以當前位置為原點計算。2表示以檔案末尾為原點進行計算。需要注意,如果檔案以a或a+的模式開啟,每次進行寫操作時,檔案操作標記會自動返回到檔案末尾。

fp.truncate([size])                      

#把檔案裁成規定的大小,預設的是裁到當前檔案操作標記的位置。如果size比檔案的大小還要大,依據系統的不同可能是不改變檔案,也可能是用0把檔案補到相應的大小,也可能是以一些隨機的內容加上去。

2.   讀,寫檔案操作

我們先來看一下讀檔案的簡單的例子:


而對於上述操作中的文字檔test.txt大小為41kb,但是差距已經產生了,也就是說,當你的記憶體允許的話,我們建議一次性讀入,速度是最快的,當然,我們也可以很方便的使用readlines進行讀取,這種逐行迭代的方式讀取會很節省記憶體資源。

我們再來看一個寫檔案的例子:



當我們運行程式之後,我們發現,test.txt裡面只剩下了writeTo2的內容,這裡面有一點要注意,就是,只要你用”w”或”wb”模式開啟一個檔案的時候,檔案內容就被擦除了,我們試試看:




當我們跑完程式之後,發現,test.txt空了!如果我們想要把新資料添加在原有資料之後,應該使用”a”,”ab”, 這一點切記,我們看一下例子:


 





聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.