Pythonでos.scandirを使ってディレクトリ内容を高速に取得する方法

この記事では、Pythonのos.scandir関数を用いてディレクトリの内容を高速に取得する方法を詳しく解説します。具体的なコード例とその解説、応用例を含めています。

目次

os.scandirとは?

`os.scandir()`はPythonの標準ライブラリであり、ディレクトリ内のすべてのファイルやサブディレクトリを取得するための関数です。古い`os.listdir()`よりも高速で、より多くの情報を提供することができます。

os.scandirとos.listdirの違い

– `os.listdir()`はファイル名とディレクトリ名のリストを返すだけです。
– `os.scandir()`は`DirEntry`オブジェクトを返し、これを使ってファイルの詳細情報(例:ファイルサイズや修正日時)を取得することができます。

基本的な使い方

基本的な使い方は非常にシンプルです。以下に簡単なコード例を示します。

import os

# ディレクトリの内容を取得
with os.scandir('/path/to/directory') as entries:
    for entry in entries:
        print(entry.name)

コード解説

1. `os`モジュールをインポートします。
2. `os.scandir()`関数にディレクトリのパスを指定します。
3. `for`ループで各`DirEntry`オブジェクトを処理します。この例では、単純に各エントリ(ファイルやサブディレクトリ)の名前を表示しています。

応用例

os.scandirを応用したいくつかの実用的な例を紹介します。

1. ファイルのみを取得する

with os.scandir('/path/to/directory') as entries:
    for entry in entries:
        if entry.is_file():
            print(entry.name)

2. サブディレクトリのみを取得する

with os.scandir('/path/to/directory') as entries:
    for entry in entries:
        if entry.is_dir():
            print(entry.name)

3. ファイルサイズと最終更新時間を取得する

with os.scandir('/path/to/directory') as entries:
    for entry in entries:
        if entry.is_file():
            print(f"{entry.name}: {entry.stat().st_size} bytes, 最終更新時間: {entry.stat().st_mtime}")

まとめ

この記事では、Pythonの`os.scandir()`関数を使用してディレクトリの内容を高速に取得する方法について詳しく解説しました。基本的な使い方から応用例までを網羅していますので、これを機にぜひ試してみてください。

コメント

コメントする

目次