import pdb import subprocess import tempfile import os.path import shutil def _onerror(func, path, exc_info): pdb.set_trace() subprocess.run(['hdiutil', 'unmount', device]) shutil.rmtree(path) pdb.set_trace() imagefile = tempfile.mktemp(suffix='.dmg', dir=tempfile.gettempdir()) subprocess.run(['hdiutil', 'create', '-fs', 'MS-DOS', '-size', '180KB', imagefile]) device = '' tmpdir = '' try: with tempfile.TemporaryDirectory(onerror=_onerror) as d: print(d) tmpdir = str(d) foodir = os.path.join(d, 'foo') os.mkdir(foodir) ret = subprocess.run(['hdiutil', 'attach', '-mountroot', foodir, imagefile], stdout=subprocess.PIPE, stderr=subprocess.PIPE) device = ret.stdout.split()[2].decode('ascii') except: pass pdb.set_trace() if os.path.exists(tmpdir): subprocess.run(['hdiutil', 'unmount', device]) shutil.rmtree(tmpdir) os.unlink(imagefile)