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 中国語 Web サイトの他の関連記事を参照してください。