mirror of https://github.com/python/cpython.git
close the file even if an exception occurs #5536
This commit is contained in:
parent
8ed2520536
commit
b364bfe2f4
|
@ -233,6 +233,7 @@ def retrieve(self, url, filename=None, reporthook=None, data=None):
|
||||||
except IOError, msg:
|
except IOError, msg:
|
||||||
pass
|
pass
|
||||||
fp = self.open(url, data)
|
fp = self.open(url, data)
|
||||||
|
try:
|
||||||
headers = fp.info()
|
headers = fp.info()
|
||||||
if filename:
|
if filename:
|
||||||
tfp = open(filename, 'wb')
|
tfp = open(filename, 'wb')
|
||||||
|
@ -246,6 +247,7 @@ def retrieve(self, url, filename=None, reporthook=None, data=None):
|
||||||
(fd, filename) = tempfile.mkstemp(suffix)
|
(fd, filename) = tempfile.mkstemp(suffix)
|
||||||
self.__tempfiles.append(filename)
|
self.__tempfiles.append(filename)
|
||||||
tfp = os.fdopen(fd, 'wb')
|
tfp = os.fdopen(fd, 'wb')
|
||||||
|
try:
|
||||||
result = filename, headers
|
result = filename, headers
|
||||||
if self.tempcache is not None:
|
if self.tempcache is not None:
|
||||||
self.tempcache[url] = result
|
self.tempcache[url] = result
|
||||||
|
@ -266,8 +268,10 @@ def retrieve(self, url, filename=None, reporthook=None, data=None):
|
||||||
blocknum += 1
|
blocknum += 1
|
||||||
if reporthook:
|
if reporthook:
|
||||||
reporthook(blocknum, bs, size)
|
reporthook(blocknum, bs, size)
|
||||||
fp.close()
|
finally:
|
||||||
tfp.close()
|
tfp.close()
|
||||||
|
finally:
|
||||||
|
fp.close()
|
||||||
del fp
|
del fp
|
||||||
del tfp
|
del tfp
|
||||||
|
|
||||||
|
|
|
@ -188,6 +188,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #5536: urllib.urlretrieve makes sure to close the file it's writing to
|
||||||
|
even if an exception occurs.
|
||||||
|
|
||||||
- Issue #5381: Added object_pairs_hook to the json module. This allows
|
- Issue #5381: Added object_pairs_hook to the json module. This allows
|
||||||
OrderedDicts to be built by the decoder.
|
OrderedDicts to be built by the decoder.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue