Skip to content

Commit 59963e3

Browse files
committed
Merge pull request #5626 from jtratner/always-close-tempfiles
TST: Always try to close file descriptors of tempfiles
2 parents 0a656ff + 91e604c commit 59963e3

File tree

2 files changed

+11
-4
lines changed

2 files changed

+11
-4
lines changed

pandas/io/tests/test_pytables.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -3731,7 +3731,7 @@ def do_copy(f = None, new_f = None, keys = None, propindexes = True, **kwargs):
37313731

37323732
if new_f is None:
37333733
import tempfile
3734-
new_f = tempfile.mkstemp()[1]
3734+
fd, new_f = tempfile.mkstemp()
37353735

37363736
tstore = store.copy(new_f, keys = keys, propindexes = propindexes, **kwargs)
37373737

@@ -3757,6 +3757,10 @@ def do_copy(f = None, new_f = None, keys = None, propindexes = True, **kwargs):
37573757
finally:
37583758
safe_close(store)
37593759
safe_close(tstore)
3760+
try:
3761+
os.close(fd)
3762+
except:
3763+
pass
37603764
safe_remove(new_f)
37613765

37623766
do_copy()

pandas/util/testing.py

+6-3
Original file line numberDiff line numberDiff line change
@@ -345,17 +345,20 @@ def ensure_clean(filename=None, return_filelike=False):
345345
yield f
346346
finally:
347347
f.close()
348-
349348
else:
350-
351349
# don't generate tempfile if using a path with directory specified
352350
if len(os.path.dirname(filename)):
353351
raise ValueError("Can't pass a qualified name to ensure_clean()")
354352

355353
try:
356-
filename = tempfile.mkstemp(suffix=filename)[1]
354+
fd, filename = tempfile.mkstemp(suffix=filename)
357355
yield filename
358356
finally:
357+
try:
358+
os.close(fd)
359+
except Exception as e:
360+
print("Couldn't close file descriptor: %d (file: %s)" %
361+
(fd, filename))
359362
try:
360363
if os.path.exists(filename):
361364
os.remove(filename)

0 commit comments

Comments
 (0)