gh-85567: Register a cleanup function to close files for FileType objects in argparse (#32257)

* bpo-41395: Register a cleanup function to close files for FileType objects in argparse

* Added import as top level import, and renamed file as fh.
This commit is contained in:
achhina 2022-04-17 21:53:37 -04:00 committed by GitHub
parent 7173fd5de0
commit 328dbc051f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 3 deletions

View file

@ -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")