summaryrefslogtreecommitdiffstats
path: root/Lib/argparse.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/argparse.py')
-rw-r--r--Lib/argparse.py10
1 files changed, 7 insertions, 3 deletions
diff --git a/Lib/argparse.py b/Lib/argparse.py
index 429a72a..881dfda 100644
--- a/Lib/argparse.py
+++ b/Lib/argparse.py
@@ -84,7 +84,7 @@ __all__ = [
'ZERO_OR_MORE',
]
-
+import atexit as _atexit
import os as _os
import re as _re
import sys as _sys
@@ -1268,8 +1268,12 @@ class FileType(object):
# all other arguments are used as file names
try:
- return open(string, self._mode, self._bufsize, self._encoding,
- self._errors)
+ fh = open(string, self._mode, self._bufsize, self._encoding, self._errors)
+
+ # Register cleanup function to close file
+ _atexit.register(fh.close)
+
+ return fh
except OSError as e:
args = {'filename': string, 'error': e}
message = _("can't open '%(filename)s': %(error)s")