Skip to content

Commit 9e352b5

Browse files
committed
fix: temp directory problems with tarfiles
1 parent 2a702ab commit 9e352b5

File tree

2 files changed

+12
-6
lines changed

2 files changed

+12
-6
lines changed

heudiconv/convert.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,14 @@ def convert(items, converter, scaninfo_suffix, custom_callable, with_prov,
256256
if op.exists(outname):
257257
set_readonly(outname)
258258

259+
if items:
260+
common = op.commonprefix(item_dicoms)
261+
tmp = '/'.join(common.split(op.sep)[:3])
262+
if (op.dirname(tmp) == '/tmp'
263+
and op.basename(tmp).startswith('heudiconvDCM')):
264+
# clean up directory holding dicoms
265+
shutil.rmtree(tmp)
266+
259267
if custom_callable is not None:
260268
custom_callable(*item)
261269

heudiconv/parser.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
from collections import defaultdict, OrderedDict
88

99
import tarfile
10+
from tempfile import mkdtemp
1011

1112
from .dicoms import group_dicoms_into_seqinfos
12-
from .utils import (TempDirs, docstring_parameter, StudySessionInfo, load_json,
13+
from .utils import (docstring_parameter, StudySessionInfo, load_json,
1314
save_json, create_file_if_missing, json_dumps_pretty)
1415

1516
lgr = logging.getLogger(__name__)
@@ -62,9 +63,8 @@ def get_extracted_dicoms(fl):
6263
# strategy: extract everything in a temp dir and assemble a list
6364
# of all files in all tarballs
6465

65-
tempdirs = TempDirs()
66-
67-
tmpdir = tempdirs(prefix='heudiconvDCM')
66+
# cannot use TempDirs since will trigger cleanup with __del__
67+
tmpdir = mkdtemp(prefix='heudiconvDCM')
6868

6969
sessions = defaultdict(list)
7070
session = 0
@@ -99,8 +99,6 @@ def get_extracted_dicoms(fl):
9999
# None
100100
sessions[None] += sessions.pop(0)
101101

102-
tempdirs.cleanup() # will this affect anything?
103-
104102
return sessions.items()
105103

106104

0 commit comments

Comments
 (0)