import os, subprocess from os.path import join, getsize import multiprocessing from multiprocessing.pool import ThreadPool def call_oggenc(f): proc = subprocess.Popen(cmd + '\"' + f + '\"') proc.wait() outs = proc.returncode if outs == 0: try: os.remove(f) except PermissionError: print('{}の削除に失敗'.format(f)) return outs target = 'D:/BMS/' # target以下を見る cmd = 'D:/BMS/bmstool/oggenc2.exe -q6 -Q ' # oggenc2.exeのパスを指定 success = 0 failure = 0 with ThreadPool(4) as pool: for root, dirs, files in os.walk(target): print(root) files = [f for f in files if f.endswith('.wav')] results = [] for i in files: results.append(pool.apply_async(call_oggenc, (join(root, i),))) for result in results: result.wait() if result.get() == 0: success += 1 else: failure += 1 print('success:{}, failure:{}'.format(success, failure))