科技

Python OS模組簡介

在本教程中,我們將學習怎樣使用Python中的os模組。

目錄表

簡介

基本函式

列出當前工作目錄的檔案/目錄

改變工作目錄

建立單個和巢狀目錄結構

遞迴刪除單個和巢狀目錄結構

資料處理例項

結論

簡介

Python是近年來用於資料處理、資料分析和網站構建等各種任務的最常用語言之一。在處理這些任務的過程中,有許多工依賴於作業系統。Python允許開發人員通過Python中的os模組使用多個依賴於作業系統的功能。這個包抽象了平臺的功能,並提供了相關python函式來導航、建立、刪除和修改檔案和資料夾。在本教程中,你將瞭解如何匯入這個包、它的基本功能以及使用這個庫執行資料合併任務的python示例專案。

基本函式

我們通過一些例項程式碼來學習一下這個模組。

匯入庫:

我們來獲取本模組可以使用的方法列表:

輸出:

現在,使用getcwd方法我們可以獲取當前工作目錄路徑。

輸出:

列出資料夾和檔案

我們使用 listdir 來列出當前目錄的資料夾/檔案:

輸出:

如你所看到的,我有兩個資料夾: Data 和 Population_Data ,三個檔案: README.md markdown 檔案, 以及兩個名為 tutorial.py和tutorial_v2.py的Python檔案。

為了獲取我的專案資料夾的樹形結構,我們來寫一個函式,使用 os.walk 來迭代當前目錄下每個資料夾中的所有檔案。

在當前工作路徑中呼叫這個函式,當前路徑可以通過之前學習的函式得到:

輸出:

備註:為方便起見,只擷取輸出一部分。

從輸出中可以看到,資料夾的名稱以一個 / 結尾,資料夾中的檔案向右縮進了四個空格。Data 資料夾中有一個名為 uscitiesv1.4.csv 的csv檔案。這個檔案包含了美國每個城市的人口資料。Population_Data 資料夾儲存所有州的資料,其中包含從 uscitiesv1.4.csv 中提取的每個州的人口資料的獨立csv檔案。

改變工作目錄

我們來改變工作目錄,進入到包含 “New York”州資料的目錄。

現在,我們在這個目錄中再次執行 list_files 方法。

輸出:

如你所見,我們進入了 Population_Data 資料夾下的 New York 資料夾。

建立單個和巢狀目錄結構

現在,我們在這個目錄中建立一個名為 testdir 的新目錄。

輸出:

如你所見,它在當前工作目錄中建立了一個新目錄。

我們來建立一個兩層巢狀的目錄。

輸出:

我們得到一個錯誤。具體來說,我們得到一個 FileNotFoundError 錯誤。你可能想知道,當我們試圖建立目錄時,為什麼會產生一個 FileNotFound 錯誤。

原因:Python模組尋找一個名為 level1dir 的目錄來建立 level2dir 目錄。因為 level1dir 不存在,所以它首先丟擲一個 FileNotFoundError錯誤。

對於這樣的目的,我們可以使用 mkdirs 函式來代替,它可以遞迴地建立多個目錄。

檢視當前目錄樹。

輸出:

可以看到,現在在 New York 資料夾下有兩個子目錄:testdir 和 level1dir。level1dir下面有一個名為level2dir 的目錄。

遞迴刪除單個和多層目錄

os 模組也有修改或刪除目錄的方法,我將在這裡演示。

現在,讓我們來使用 rmdir 刪除剛才建立的目錄:

檢視當前目錄樹來確認此目錄已經不存在:

輸出:

你可以看到,testdir 目錄已經被刪除。

我們來嘗試刪除巢狀目錄樹 level1dir 和 level2dir。

輸出:

正如所見,這裡丟擲了一個 OSError,這是正確的。它提示 level1dir 目錄不是空的。這是正確的,因為它下面有 level2dir。

使用 rmdir 方法不可能刪除非空目錄,類似於Unix命令列版本。

就像 makedirs 方法一樣,我們試一下 rmdirs,它可以遞迴地刪除樹結構中的目錄。

我們再來看一下樹結構:

輸出:

它返回前一個目錄的狀態。

資料處理例項

到目前為止,我們已經研究瞭如何檢視、建立和刪除巢狀目錄結構。現在我們來看一個 os 模組如何幫助資料處理的例子。

為此,我們在目錄結構中向上一層。

這一步操作之後,我們再來檢視一下目錄樹結構。

輸出:

備註:為了簡便起見,只擷取輸出一部分。

我們通過遍歷每個州的目錄併合並CSV檔案來合併所有州的資料。

由於 os 模組的部分原因,我們能夠建立 merge_data,這是一個包含來自每個州的人口資料的資料幀。

結論

在本文中,我們簡要地探討了Python內建 os 模組的不同功能。我們還看到了一個簡單的例子,說明如何在資料科學和分析領域中使用該模組。很重要的一點是,要了解 os 還提供了很多的功能,並且可以根據開發人員的需要構建更復雜的邏輯。

英文原文:https://stackabuse.com/introduction-to-python-os-module/

譯者:憂鬱的紅秋褲

Reference:科技日報

看更多!請加入我們的粉絲團

轉載請附文章網址

不可錯過的話題