diff options
Diffstat (limited to 'Lib/argparse.py')
-rw-r--r-- | Lib/argparse.py | 10 |
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") |