Python 3 學習筆記:目錄&文件處理(二)

文件基本操作

在 Python 中,內置了文件(File)對象,在操作文件之間,需要使用 open() 函數打開或創建一個文件,

file = open(fileName, mode, buffering)


file 表示被創建的文件對象;fileName 表示要打開或創建的文件名;mode 表示文件的打開模式;buffering 表示讀寫文件的緩存模式。

其中,mode 的參數如下:

Python 3 學習筆記:目錄&文件處理(二)


打開文件並對其操作完畢後,要及時關閉該文件,以免造成不必要的損壞。可以使用 close() 函數將文件關閉,

file.close()


為了避免忘記關閉文件而對文件造成不必要的損壞,可以使用 with 關鍵字,該語句可以實現在處理文件時,無論是否出現錯誤,都保證 with 語句結束後關閉文件。

with expression as target:
 pass


expression 是一個表達式,例如使用 open() 函數打開一個文件;target 用於存放 expression 的結果。

當需要向打開的文件中寫入內容時,可以使用 write() 函數,

file.write()


當使用 write() 函數向文件中寫入內容後,只有在使用 close() 函數關閉文件時,才會將寫入的內容保存;如果不想立即關閉文件,可以使用 flush() 函數保存寫入的內容,

file.flush()


如果要讀取文件的內容,可以使用 read() 函數,

file.read(size)


size 表示要讀取的字符的個數,省略則表示讀取全部字符。

read() 函數是從頭開始讀的,如果想要從指定位置開始,則可以使用 seek() 函數移動光標到指定位置,

file.seek(offset, whence)


其中,offset 表示光標移動的字符個數;whence 指定字符個數從哪個位置開始計算:0 表示從頭開始;1 表示從當前位置開始;2 表示從結尾開始,默認為 0。

可以使用 readline() 函數一行行讀取,

file.readline()


也可以使用 readlines() 函數讀取全部行,

file.readlines()
 


該函數返回一個字符串列表,每個元素為文件的一行內容。

高級操作

shutil 模塊

shutil 模塊可以複製、移動、重命名和刪除目錄或文件。

shutil.copy(source, destination)


該函數可以將 source 路徑下的文件,複製到 destination 路徑的目錄下,如果目標目錄中已存在同名文件,則直接替換;如果 destination 路徑中包含文件名,則將被複制的文件重命名為此名稱。

如果想要將目錄及其中的子目錄和文件,全部複製到一個新的目錄中,可以使用

shutil.copytree(source, destination)


注意,destination 路徑下不能包含和 source 路徑中目標文件夾的同名目錄,否則系統會拋出異常。

如果需要移動目錄(包括其中的子目錄和文件)或文件,可以使用

shutil.move(source, destination)


如果目標文件夾中已經包含同名目錄或者文件,則會拋出異常。

os 模塊中的 rmdir() 和 removedirs() 都只能刪除一個非空的目錄,如果想刪除一個目錄及其中的子目錄和文件,可以使用,

shutil.rmtree(path)


該函數可以刪除指定的目錄及其中所有內容(子目錄及文件)。

send2trash 模塊

使用 shutil 模塊中的函數刪除目錄即文件是不可恢復的,為了保險起見,可以使用第三方庫 send2trash 中的函數做刪除動作,它不會完全刪除目錄或文件,而是將它們放入回收站中,以供反悔。因為它是一個第三方模塊,所以使用之前需要使用 pip 工具安裝它,並使用 import 語句導入。

send2trash.send2trash(path)
 


zipfile 模塊

讀取 .zip 文件

該模塊可以將多個目錄或文件做成一個 ZIP 壓縮包,當然也可以解壓壓縮包。

和 File 文件對象一樣,要讀取 ZIP 文件的內容,首先需要創建一個 ZipFile 對象,

zipfile.ZipFile(path)


該函數返回一個 ZipFile 對象;path 表示一個 .zip 格式的壓縮包。

然後,可以使用 namelist() 函數獲取壓縮包中的文件列表,

ZipFile.namelist()


該函數返回一個以壓縮包中的文件名作為元素的列表。

可以使用 getinfo() 函數獲取文件列表中文件的信息,

ZipFile.getinfo(ZipFile.namelist()[index])
 


該函數需要一個壓縮包中的文件作為參數,返回一個 ZipInfo 對象,該對象具有許多可以獲取文件信息的屬性,如 filename、date_time、file_size 等。

解壓 .zip 文件

通過 ZipFile 對象的 extractall() 方法可以對壓縮包進行解壓,

ZipFile.extractall(path)


path 可選參數,用於指定解壓後的存放路徑;如果不指定,則解壓中當前路徑下。

創建 .zip 壓縮包

創建壓縮包,首先需要使用 ZipFile() 方法新建一個空的壓縮包,然後使用 write() 方法將文件添加到壓縮包中,

zipfile.ZipFile(name, mode).write(fileName, compress_type=zipfile.ZIP_DEFLATED)


name 用於指定壓縮包的名稱;mode 用於指定壓縮包的打開模式;fileName 用於指定要放入壓縮包中的文件;compress_type 用於指定壓縮算法,一般都是 ZIP_DEFLATED,該算法都大部分類型的文件都有效。

其中,mode 的值可以參考文件基本操作中的值。

◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆ ◆ ◆ ◆ ◆◆

為了幫各位觀眾老爺們快速入門python,我在這裡準備了一套“經典入門教程”,這些是入門付費教程哦,現在當做福利免費贈送給各位觀眾老爺們,私信我“python入門”就可以領取!

點擊我的頭像關注我進入主頁,就能看到私信按鈕了。私信我“python入門”,一個字不能多一個字不能少,即可快速領取!


分享到:


相關文章: