Wizard Notes

音楽信号解析の技術録、音楽のレビューおよび分析、作曲活動に関する雑記です

全オーディオファイルとオーディオファイルを含む全ディレクトリを取得

この記事をシェアする

概要

タイトル通り、あるディレクトリ以下にある、全てのオーディオファイルと、オーディオファイルを含む全ディレクトリを取得するスクリプトになります。

深いディレクトリ構造でも、 オーディオファイルが含まれるディレクトリを列挙したり、全オーディオファイルを列挙したりすることができます。

実装

import os
import glob
from itertools import chain
from pprint import pprint


def search_audio_dirs_and_files(
        dirpath,
        exts = ["flac", "mp3", "m4a", "aac", "wav"]
    ):
    audiodirpaths = []
    audiofilepathes = []
    for root, dirs, files in os.walk(dirpath):
        tmp_audiofilepathes = list(chain.from_iterable([list(glob.glob(f"{root}/*.{ext}")) for ext in exts]))
        
        if len(tmp_audiofilepathes) > 0:
            audiofilepathes.append(tmp_audiofilepathes)
            audiodirpaths.append(root)

    return audiodirpaths, audiofilepathes
    #files = os.listdir(p_dirpath)
    #dirs = [f for f in files if os.path.isdir(os.path.join(p_dirpath, f))]

p_dirpath = "C:/Users/Hiro/Music/Larc"
audiodirpaths, audiofilepathes = search_audio_dirs_and_files(p_dirpath)

pprint(audiodirpaths)
pprint(audiofilepathes)