本文將主要介紹在Python中,如何讀取文字檔案,以及如何將內容寫入到檔案中。為了讀取檔案,我們預先設計一個名為sample1.txt的檔案,放在和原始碼相同的目錄中。而且為了取得較好的演示效果,我們特意把檔案的內容設計為"第XX行"。檔案的位置如下所示:
檔案的內容如下所示:
在Python中,檔案的開啟是使用open函式,函式有2個引數,第1個引數是檔名稱,第2個引數是讀寫的模式。'r'是隻讀模式,'w'是寫入模式,如果檔案已經存在了,就會清空裡面的所有內容,'a'是追加模式,寫入的內容會自動追加到檔案最後,'r+'是指同時讀寫模式。'b'是指二進位制模式。
在Python中檔案的基本操作流程是:open()函式read()/write()函式close()函式。以下是一個檔案處理的基本程式原始碼
在這個程式中,我們使用open('sample1.txt', 'r')開啟一個叫sample1.txt的檔案,檔案的模式是r,說明這是一個只讀模式。read(size)函式是讀取檔案的內容。如果引數size省略的話,將讀取整個檔案。在本例中,由於檔案很小,所以我們不使用size引數,一次性將內容讀取到變數content中。內容讀取完之後,我們可以使用print來看一下檔案內容是否讀取正常。
透過執行結果,我們可以看到content的內容就是文字檔案的內容,三行被一次性讀到變數中。最後我們使用close函式,關閉檔案。
在平時工作中,我們讀取文字文字一般都會按行來讀取,而使用read函式按位元組來讀取就會有一些困難,因此我們一般會使用readline()。下面的例子我們演示了readline的使用。
readline函式每次只讀取一行文字。當讀到檔案結尾的時候,函式將返回一個空字串。因此,我們使用while content!=""進行判斷是否已經讀到檔案結尾。如果檔案沒有到結尾,我們就繼續readline。這裡需要說明一下的是,如果讀取的是一個空行,那麼content的值將會是"\n",這也是Python特意設計的,以便和空字串""區分開,才好識別是讀到了空行,還是檔案結尾。即空字串""代表檔案結尾,"\n"代表空行。
其實在Python中,我們還有一個更加高效,並且好用的方法來迴圈讀取文字檔案的內容,就是使用for和in,這樣我們就不再需要寫過多的程式碼進行判斷,程式的原始碼如下,實現的效果其實是一樣的。
在上面程式的基礎上,我們再深入一些,實際工作中,我們在讀取檔案的時候,程式都會伴隨著各種複雜的操作,可能會遇到很多意外情況。為了更好的確保程式能正確的關閉檔案。通常我們會使用 with 關鍵字。程式的原始碼如下所示:
想像一樣,在實際工作中,我們可能有很長很長的操作。現在我們縮短操作的過程,使用上面的程式做演示。雖然我們沒有直接呼叫close,但是Python可以確保恰當的關閉檔案,效果有點兒類似try…finally,但是整體上要更簡潔一些。
至此,關於文字檔案讀取的內容,就先告一段落,下面我們看一下寫入文字檔案的例項。
寫入檔案使用的是write函式。write只接受字串形式的引數。因此,我們可以看到在原始碼的最後一行,我們要想寫入time或者數值型變數時,我們是使用了format函式。其中time型別,我們使用strftime進行了轉換,轉成了字串型別
檔案寫入後的效果如下,第1行是直接將字串寫入檔案,第2行中我們透過format格式化之後,整理形成了一段帶有時間和數值的字串,然後再寫入檔案中。
以上就是關於讀取和寫入文字檔案的基本操作。
我使用的環境:Windows 7 + Python 2.7.17 + PyCharm Community Edition 2016.1.5