Python文件處理
數據的存儲可以使用資料庫,也可以使用文件。 資料庫保持了數據的完整性和關聯性,且使用數據更安全、可靠。使用文件存儲數據則非常簡單、易用,不必安裝資料庫管理系統等運行環境。 文件通常用於存儲應用軟體的參數或臨時性數據,是一個命名的比特集合,存儲在硬碟、U盤、快閃記憶體條等輔助存儲設備中。 文件分為兩類:文本文件和二進位文件。 Python提供了os、os.path、shutil等模塊處理文件。
一、文件的常見操作
文件的常見操作包括:
打開文件
讀寫文件
複製文件
刪除文件
1、文件的創建
文件的打開或創建可以使用函數open。該函數可以指定處理模式,設置打開的文件為只讀、只寫或可讀寫狀態。
格式: open(file, [mode[, buffering]])—>file object
說明:
參數file是被打開的文件名。若文件file不存在,open()將創建該文件,然後再打開該文件。
參數mode是指文件的打開模式。打開模式如表8-1。
參數buffering設置緩存模式。0表示無緩衝;1表示行緩衝;如果大於1則表示緩衝區的大小,,-1(或者任何負數)代表使用默認的緩衝區大小。以位元組為單位。
open()返回1個file對象,file對象可以對文件進行各種操作
文件的打開模式
關於file類:
file類用於文件管理,可以對文件進行創建、打開、讀寫、關閉等操作。 文件的處理一般分為三個步驟:
創建並打開文件,使用open()函數返回1個file對象。
調用file對象的read()、write()等方法處理文件。
調用close()關閉文件,釋放file對象佔用的資源。
file類的常用屬性和方法
例:文件的創建、寫入和關閉
例:在文件尾添加內容
2、文件的讀取
文件的讀取有多種方法,可以使用readline()、readlines()或read()函數讀取文件。
(1)按行讀取方式readline()
readline()每次讀取文件中的一行,需要使用永真表達式循環讀取文件。但當文件指針移動到文件的末尾時,依然使用readline()讀取文件將出現錯誤。因此程序中需要添加1個判斷語句,判斷文件指針是否移動到文件的尾部,並且通過該語句中斷循環。
例:使用readline()讀文件
執行結果:
(2)多行讀取方式
函數readlines()可一次性讀取文件中多行數據。
使用readlines()讀取文件,需要通過循環訪問readlines()返回的內容。
例:使用readlines()讀文件
執行結果:
(3)一次性讀取方式
讀取文件最簡單的方法是使用read(),read()將從文件中一次性讀出所有的內容,並賦值給1個字元串變數。
例:使用read()返回指定位元組的內容
執行結果:
3、文件的寫入
文件的寫入同樣有多種方法,可以使用write()、writelines()方法寫入文件。
使用write()方法將字元串寫入文件,而writelines()方法可將列表中存儲的字元串序列寫入文件。
例:使用writelines()寫文件
將字元串插入到文件開頭:
相比在文件末尾添加字元串,將字元串寫入文件開頭不那麼容易,因為操作系統沒有提供這樣的支持。
解決的方法是:將文件讀取到一個字元串中,將新文本插入到該字元串,再將這個字元串寫入原來的文件。
例:將字元串插入到文件開頭
4、文件的刪除
刪除文件需要使用os模塊和os.path模塊。
os模塊提供了對系統環境、文件、目錄等操作系統級的介面函數。
下表列出了os模塊常用的文件處理函數。
表:os模塊常用的文件處理函數
表:os.path模塊常用函數
注意:os模塊的open()函數與內置的open()函數的用法不同。
例:文件的刪除
5、文件的複製
file類並沒有提供直接複製文件的方法,但可以使用read()、write()方法來實現複製文件的功能。
例:用read()、write()實現文件複製
複製文件的其他方法:
shutil模塊是另一個文件、目錄的管理介面,提供了一些用於複製文件、目錄的函數。
其中,copyfile()函數可以實現文件的複製,move()函數可以實現文件的剪切。 copyfile(src, dst)
其中,參數src表示源文件的路徑,dst表示目標文件的路徑,均為字元串類型。
Move(src, dst, *, follow_symlinks=True)
例:使用shutil模塊實現文件的複製和移動
6、文件的重命名
os模塊的函數rename()可以對文件或目錄進行重命名。
在實際應用中,經常需要將某一類文件修改為另一種類型,即修改文件的後綴名。可以通過函數rename()和字元串查找函數來實現。
例:修改後綴名
7、文件內容的搜索和替換
文件內容的搜索和替換可以使用字元串查找和替換來實現。
例:從hello.txt文件中統計字元串』hello』出現的次數。
8、處理二進位文件
Python中,通常使用pickle模塊處理二進位文件。
可以使用pickle.dump將數據結構存儲到磁碟,之後再用pickle.load從磁碟獲取數據結構。
pickle不能用於讀寫特殊格式的二進位文件,如GIF文件。對這種格式的文件,必須逐位元組處理。
例:二進位文件存取
執行結果:
二、目錄的常見操作
Python的os模塊和os.path模塊還提供了一些針對目錄操作的函數。
1、創建目錄和刪除目錄
os模塊提供的常用目錄處理函數如表所示。
表:os模塊常用目錄處理函數
例:目錄的創建和刪除
2、目錄的遍歷
目錄的遍歷有兩種實現方法:遞歸函數、os.walk()。
例:用遞歸函數遍歷目錄d:Python34lib
例:使用os.walk()遍歷目錄
3、其他目錄相關操作
對目錄的常見操作還有: 返回當前目錄中的文件和文件夾; 返回當前目錄中的指定類型文件; 返回當前目錄中所有文件的大小總和等。
例:返回當前目錄中的文件和文件夾
例:返回當前目錄或指定目錄中的.py文件
例:返回當前目錄中所有文件的大小總和
※Python基礎了解
※關於Python數據分析,這裡有一條高效的學習路徑
TAG:Python |