python

しょっちゅう忘れることを書いておく。

66

188 views

ファイルを再帰的に取得する

指定したディレクトリ配下のファイル一覧を取得するクラス。

# coding: UTF-8
import os


def get_extension(file_name):
    """
    拡張子を取得する
    :param file_name: ファイルパス
    :return: 拡張子
    """
    _, extension = os.path.splitext(file_name)
    return extension


def is_allow_ext(allow_ext_list, file_path):
    """
    allow_ext_listに登録した拡張と同じ拡張子の場合True,
    全て異なる場合はFalseを返す
    :param allow_ext_list:リスト形式で許可する拡張子を指定する
    :param ext: ファイル名
    :return:
    """
    ret = False
    ext = get_extension(file_path)
    for allow_ext in allow_ext_list:
        allow_ext = allow_ext.replace(".", "")
        ext = ext.replace(".", "")
        if allow_ext == ext:
            ret = True
            break
    return ret


class FileFinder(object):
    """
    検索対象のディレクトリ、またはURLのリストを作成します。

    """
    def __init__(self):
        self.file_names = []

    def crawl(self, directory, allow_ext_filter=None):
        """
        ルートディレクトリ配下のファイル一覧を取得する
        :param directory: 検索するルートディレクトリ
        :param allow_ext_filter: 検索の対象とする拡張子
        :return:
        """
        self.file_names = []
        for root, dirs, files in os.walk(directory):
            for file in files:
                # 拡張子の指定がある場合
                if allow_ext_filter is not None:
                    if is_allow_ext(allow_ext_filter, file):
                        # 許可された拡張子だけ取得する
                        self.file_names.append(os.path.join(root, file))
                else:
                    # 拡張子の指定がない場合
                    self.file_names.append(os.path.join(root, file))

        return self.file_names

    def get_file_names(self):
        return self.file_names

Page 57 of 69.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626