如何在 Windows 中使用 Python 列出非隱藏檔案和目錄?
當在 Windows 環境中使用 Python 處理檔案和目錄操作時,遇到隱藏檔案和目錄並不少見。這些隱藏檔案和資料夾通常是系統檔案,並且有意地隱藏在使用者視線之外。其中,您可能會發現配置檔案、那些短暫的臨時檔案以及一系列與系統相關的資料。但是,在大多數情況下,您可能只需要列出非隱藏檔案和目錄,以避免混亂並專注於相關資料。
準備好踏上這篇包羅永珍的文章之旅。前方將探索各種技術,每種技術都針對編目非隱藏檔案和目錄的任務。請放心,我們的指導包含分步說明和程式碼片段,照亮您的路徑。無論您偏愛“os”模組的實用魅力、 “pathlib”模組的實用性,還是第三方庫的創造力,我們都能滿足您的需求。在您完成學習後,您將能夠熟練地協調在目錄中提取那些未隱藏檔案的無縫過程。
讓我們開始這段使用 Python 進行檔案處理的旅程,並學習如何在 Windows 中列出非隱藏檔案和目錄!
使用 os.listdir() 列出非隱藏檔案和目錄
Python 中的“os”模組提供了“os.listdir()”函式,它允許我們獲取給定目錄中專案(檔案和目錄)的列表。我們可以將此函式與“os.path”函式結合使用,以過濾掉隱藏專案並僅列出非隱藏檔案和目錄。
示例
在下面的程式碼中,我們匯入了“os”模組,該模組提供了與作業系統互動的函式,包括檔案和目錄操作。
“list_non_hidden_files_and_dirs_with_os_listdir()”函式以“directory”作為輸入,並返回兩個列表:一個包含非隱藏檔案,另一個包含非隱藏目錄。
我們使用“os.listdir(directory)”獲取指定目錄中專案(檔案和目錄)的列表。
我們使用列表推導式從原始列表中過濾掉以點開頭(表示隱藏專案)的專案,從而獲得“non_hidden_items”列表。
然後,我們再次使用列表推導式將“non_hidden_items”進一步過濾成非隱藏檔案 (“non_hidden_files”) 和非隱藏目錄 (“non_hidden_dirs”) 的單獨列表。
要檢查專案是檔案還是目錄,我們分別使用“os.path.isfile(os.path.join(directory, item))”和“os.path.isdir(os.path.join(directory, item))”。
import os def list_non_hidden_files_and_dirs_with_os_listdir(directory): non_hidden_items = [item for item in os.listdir(directory) if not item.startswith('.')] non_hidden_files = [item for item in non_hidden_items if os.path.isfile(os.path.join(directory, item))] non_hidden_dirs = [item for item in non_hidden_items if os.path.isdir(os.path.join(directory, item))] return non_hidden_files, non_hidden_dirs
使用 pathlib.Path.iterdir() 列出非隱藏檔案和目錄
“pathlib”模組提供了一種更現代、面向物件的方式來處理檔案路徑。我們可以利用“Path.iterdir()”有效地列出非隱藏檔案和目錄。
示例
在此示例中,我們從“pathlib”模組匯入“Path”類,該類表示檔案系統路徑。
“list_non_hidden_files_and_dirs_with_pathlib_iterdir()”函式以“directory”作為輸入,並返回兩個列表:一個包含非隱藏檔案,另一個包含非隱藏目錄。
我們使用“Path(directory)”建立一個“Path”物件來表示輸入目錄。
我們使用列表推導式從“path_object.iterdir()”迭代器中過濾掉以點開頭(表示隱藏專案)的專案,從而獲得“non_hidden_items”列表。
然後,我們再次使用列表推導式將“non_hidden_items”進一步過濾成非隱藏檔案 (“non_hidden_files”) 和非隱藏目錄 (“non_hidden_dirs”) 的單獨列表。
要檢查專案是檔案還是目錄,我們分別使用“item.is_file()”和“item.is_dir()”。
from pathlib import Path def list_non_hidden_files_and_dirs_with_pathlib_iterdir(directory): path_object = Path(directory) non_hidden_items = [item for item in path_object.iterdir() if not item.name.startswith('.')] non_hidden_files = [item for item in non_hidden_items if item.is_file()] non_hidden_dirs = [item for item in non_hidden_items if item.is_dir()] return non_hidden_files, non_hidden_dirs
使用 os.scandir() 列出非隱藏檔案和目錄
“os.scandir()”函式是獲取目錄內容的比“os.listdir()”更有效的替代方案。我們可以將“os.scandir()”與“os.path”函式結合使用來列出非隱藏檔案和目錄。
示例
在此示例中,我們使用“os.scandir()”函式以及“os.path”函式來列出非隱藏檔案和目錄。
“list_non_hidden_files_and_dirs_with_os_scandir()”函式以“directory”作為輸入,並返回兩個列表:一個包含非隱藏檔案,另一個包含非隱藏目錄。
我們使用“with os.scandir(directory) as entries”獲取指定目錄中條目(檔案和目錄)的迭代器。
我們使用列表推導式從“entries”迭代器中過濾掉以點開頭(表示隱藏專案)的條目,從而獲得“non_hidden_items”列表。
然後,我們再次使用列表推導式將“non_hidden_items”進一步過濾成非隱藏檔案 (“non_hidden_files”) 和非隱藏目錄 (“non_hidden_dirs”) 的單獨列表。
要檢查專案是檔案還是目錄,我們分別使用“os.path.isfile(os.path.join(directory, item))”和“os.path.isdir(os.path.join(directory, item))”。
import os def list_non_hidden_files_and_dirs_with_os_scandir(directory): with os.scandir(directory) as entries: non_hidden_items = [entry.name for entry in entries if not entry.name.startswith('.')] non_hidden_files = [item for item in non_hidden_items if os.path.isfile(os.path.join(directory, item))] non_hidden_dirs = [item for item in non_hidden_items if os.path.isdir(os.path.join(directory, item))] return non_hidden_files, non_hidden_dirs
使用 pathlib.Path.glob() 列出非隱藏檔案和目錄
“pathlib”模組的“Path.glob()”方法允許我們在目錄中對檔名執行模式匹配。我們可以使用“Path.glob()”以簡潔的方式列出非隱藏檔案和目錄。
示例
在此示例中,我們從“pathlib”模組匯入“Path”類,並使用“Path.glob()”列出非隱藏檔案和目錄。
“list_non_hidden_files_and_dirs_with_pathlib_glob()”函式以“directory”作為輸入,並返回兩個列表:一個包含非隱藏檔案,另一個包含非隱藏目錄。
我們使用“Path(directory)”建立一個“Path”物件來表示輸入目錄。
我們使用列表推導式從“path_object.glob('*')”生成器中過濾掉以點開頭(表示隱藏專案)的專案,從而獲得“non_hidden_items”列表。
然後,我們再次使用列表推導式將“non_hidden_items”進一步過濾成非隱藏檔案 (“non_hidden_files”) 和非隱藏目錄 (“non_hidden_dirs”) 的單獨列表。
要檢查專案是檔案還是目錄,我們分別使用“item.is_file()”和“item.is_dir()”。
from pathlib import Path def list_non_hidden_files_and_dirs_with_pathlib_glob(directory): path_object = Path(directory) non_hidden_items = [item for item in path_object.glob('*') if not item.name.startswith('.')] non_hidden_files = [item for item in non_hidden_items if item.is_file()] non_hidden_dirs = [item for item in non_hidden_items if item.is_dir()] return non_hidden_files, non_hidden_dirs
使用 os.walk() 列出非隱藏檔案和目錄
“os.walk()”函式允許我們遍歷目錄及其子目錄。我們可以將“os.walk()”與“os.path”函式結合使用,以遞迴方式列出非隱藏檔案和目錄。
示例
在此示例中,我們結合使用“os.walk()”和“os.path”函式來列出非隱藏檔案和目錄。
“list_non_hidden_files_and_dirs_with_os_walk()”函式以“directory”作為輸入,並返回兩個列表:一個包含非隱藏檔案,另一個包含非隱藏目錄。
我們初始化“non_hidden_files”和“non_hidden_dirs”的空列表以儲存非隱藏專案。
我們使用“os.walk(directory)”遍歷目錄及其子目錄。對於每次迭代,我們獲取“root”目錄、一個“dirs”(目錄)列表以及當前目錄中的“files”列表。
我們使用列表推導式過濾掉以點開頭(表示隱藏專案)的檔案和目錄,然後擴充套件相應的“non_hidden_files”和“non_hidden_dirs”列表。
import os def list_non_hidden_files_and_dirs_with_os_walk(directory): non_hidden_files = [] non_hidden_dirs = [] for root, dirs, files in os.walk(directory): non_hidden_files.extend([os.path.join(root, f) for f in files if not f.startswith('.')]) non_hidden_dirs.extend([os.path.join(root, d) for d in dirs if not d.startswith('.')]) return non_hidden_files, non_hidden_dirs
總之,透過僅列出非隱藏實體,可以使用 Python 更有效、更專注地處理 Windows 中的檔案和目錄。透過使用各種技術,例如“os.listdir()”、“pathlib.Path.iterdir()”、“os.scandir()”、“pathlib.Path.glob()”和“os.walk()”,您可以輕鬆過濾掉隱藏檔案和目錄,並檢索所需的相關資訊。
在本文中,我們探索了幾種在 Windows 中列出非隱藏檔案和目錄的不同方法。我們詳細討論了每種方法,並提供了分步說明和程式碼示例以方便您理解。無論您偏愛“os.listdir()”的簡單性還是“pathlib”的現代方法,您現在都擁有了一系列可供使用的技術。
您必須始終記住考慮您的具體用例,並選擇最適合您需求的方法。無論您是處理單個目錄還是具有子目錄的複雜目錄結構,Python 都提供通用的工具來有效地列出非隱藏檔案和目錄。