Wizard Notes

Python, JavaScript を使った音楽信号分析の技術録、作曲活動に関する雑記

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

概要

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

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

実装

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)