使用Python獲取目錄中檔案及其大小的列表


目錄是計算機系統中一種特殊的節點,包含其他巢狀資料夾、檔案等。要列出目錄,我們需要Python的特殊庫或模組,例如os模組、glob模組等。它們還提供訪問目錄大小的方法。目錄的大小是指目錄在計算機ROM中佔用的空間。在本文中,我們將探討如何獲取目錄中檔案的列表以及它們的大小。

使用OS模組

Python的os模組是一個強大的工具,允許開發者與底層作業系統互動。它提供各種函式來執行檔案和目錄管理任務、程序處理、環境變數等等。使用os模組,您可以建立、刪除和操作檔案和目錄,執行系統命令,導航檔案路徑以及訪問各種系統相關資訊。它連線您的Python程式碼和底層作業系統,使您能夠構建健壯、與平臺無關的應用程式。

示例

我們首先使用以下程式碼中的import語句匯入了os模組。接下來,我們建立了一個名為get_file_sizes的函式,它接受目錄名稱作為引數並列印所有檔名及其大小。我們使用“listdir”列出目錄中的所有檔案和目錄。接下來,我們遍歷列表,對於每次迭代,我們檢查它是否是檔案,如果是,我們使用“getsize”方法列印名稱和大小。

import os
def get_file_sizes(directory):
    files = os.listdir(directory)
    for file in files:
        path = os.path.join(directory, file)
        if os.path.isfile(path):
            size = os.path.getsize(path)
            print(f"{file}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

輸出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用Glob和OS模組

Python的glob模組有助於使用萬用字元模式搜尋檔案和目錄。它允許您定義特定的模式或模板,並將它們與檔名或目錄名進行匹配。您可以使用"*"、"?"等萬用字元建立靈活的模式,以查詢符合您條件的檔案。使用glob模組,您可以輕鬆檢索與您指定的模式匹配的檔案列表及其對應的路徑。它提供了一種方便且高效的方式,根據可自定義的模式執行檔案搜尋和操作。

示例

在以下程式碼中,我們首先使用Python的import語句匯入了glob和os模組。接下來,我們定義了一個名為get_files_sizes的函式,它接受目錄路徑作為引數。接下來,我們使用glob模組的glob方法查詢目錄中的所有路徑。我們遍歷列表,如果它是一個檔案,我們使用os的“getsize”方法確定檔案的大小。

import glob
import os
def get_file_sizes(directory):
    file_paths = glob.glob(os.path.join(directory, "*"))
    for path in file_paths:
        if os.path.isfile(path):
            size = os.path.getsize(path)
            file_name = os.path.basename(path)
            print(f"{file_name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

輸出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用Pathlib庫的Path模組

Python中的pathlib庫是用於以面向物件的方式處理檔案系統路徑的強大工具。它提供了一種使用者友好且直觀的方法來處理路徑、目錄和檔案。使用pathlib,您可以使用一致且表達力強的語法輕鬆建立、操作和導航路徑。使用此庫的優點是它消除了使用複雜的字串操作來處理檔名的需要。

示例

在以下程式碼中,我們首先從pathlib庫中匯入了Path模組。接下來,我們建立了一個函式,該函式接受目錄名稱作為引數。我們使用Path方法建立一個物件,並使用iterdir方法遍歷目錄內的所有目錄和資料夾。接下來,我們檢查列表中的元素是否是目錄,如果是,我們使用stat().st_size方法確定大小。

from pathlib import Path

def get_file_sizes(directory):
    path = Path(directory)
    files = path.iterdir()
    for file in files:
        if file.is_file():
            size = file.stat().st_size
            print(f"{file.name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

輸出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

使用OS模組的Stat方法

os模組提供了另一種確定檔案大小的方法——stat方法。該方法有助於檢索有關檔案和目錄的各種資訊。它返回一個元組物件,其中包含指定路徑的各種屬性,例如檔案大小、許可權、時間戳等等。

示例

在以下程式碼中,我們首先匯入了os模組。接下來,在內建函式中,我們使用scandir方法列出所有存在的檔案和目錄。我們遍歷檔案,對於每個條目,我們檢查該元素是否為檔案。如果它是一個檔案,我們使用“stat”方法和st_size屬性來確定大小。

import os

def get_file_sizes(directory):
    with os.scandir(directory) as entries:
        for entry in entries:
            if entry.is_file():
                size = entry.stat().st_size
                print(f"{entry.name}: {size} bytes")
directory_path = "files"
get_file_sizes(directory_path)

輸出

file1.txt: 12 bytes
file2.txt: 26 bytes
file3.txt: 56 bytes

結論

在本文中,我們瞭解瞭如何使用Python的不同庫列出目錄中的檔案及其大小。Python是一種通用的指令碼語言,提供了各種列出檔案的方法。這包括glob、os、pathlib等。它們是與平臺無關的程式碼,使編碼人員能夠在多個應用程式中使用相同的程式碼。

更新於:2023年7月18日

1K+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.