首頁 >後端開發 >Python教學 >如何在Python中計算目錄的大小?

如何在Python中計算目錄的大小?

DDD
DDD原創
2024-11-02 06:20:29356瀏覽

How Can I Calculate the Size of a Directory in Python?

使用Python 計算目錄大小:綜合指南

在廣泛的檔案系統中導航時,確定目錄的大小可能變得非常寶貴。 Python 提供了一系列包含此功能的模組。

考慮以下 Python 程式碼片段:

<code class="python">import os

def get_size(start_path='.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            # Skip symbolic links
            if not os.path.islink(fp):
                total_size += os.path.getsize(fp)

    return total_size

print(get_size(), 'bytes')</code>

此解決方案透過遞歸遍歷子目錄、累積檔案大小提供了一種全面的方法。它避免了符號鏈結以確保準確的大小計算。格式化的大小(例如,Mb/Gb)不會直接合併,但可以輕鬆地作為後續步驟添加。

此外,為了僅計算根目錄的大小而不深入到子目錄,可以使用以下簡化方法os.listdir 可用:

<code class="python">import os

sum(os.path.getsize(f) for f in os.listdir('.') if os.path.isfile(f))</code>

此程式碼片段對目前目錄中的文件大小進行緊湊求和,不包括子目錄。

此外,為了精確確定檔案大小,os.path.getsize優於 os.stat().st_size。由於潛在的最佳化和開銷,後者可能會產生誤導。

「os.scandir」已被證明是 Python 3.4 及更低版本中「os.walk」的有效替代方案。從 Python 3.5 開始,「os.walk」已增強,以符合「os.scandir」效能。

對於更現代的方法,「pathlib」提供了一個方便的解決方案:

<code class="python">from pathlib import Path

root_directory = Path('.')
sum(f.stat().st_size for f in root_directory.glob('**/*') if f.is_file())</code>

此程式碼利用「glob」函數進行遞歸搜索,並利用「Path」物件來增強檔案處理。

總之,Python 提供了一系列函數來滿足您的目錄大小計算需求。選擇最符合您的要求的方法,以有效地導覽和管理您的檔案系統。

以上是如何在Python中計算目錄的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn