Close file handles in a timely manner in packaging.database (#12504).

This fixes a bug with the remove (uninstall) feature on Windows.  Patch
by Thomas Holmes.
diff --git a/Lib/packaging/database.py b/Lib/packaging/database.py
index 67946a2..c71d608 100644
--- a/Lib/packaging/database.py
+++ b/Lib/packaging/database.py
@@ -158,17 +158,18 @@
             self.name, self.version, self.path)
 
     def _get_records(self, local=False):
+        results = []
         with self.get_distinfo_file('RECORD') as record:
             record_reader = csv.reader(record, delimiter=',',
                                        lineterminator='\n')
-            # XXX needs an explaining comment
             for row in record_reader:
-                path, checksum, size = (row[:] +
-                                        [None for i in range(len(row), 3)])
+                missing = [None for i in range(len(row), 3)]
+                path, checksum, size = row + missing
                 if local:
                     path = path.replace('/', os.sep)
                     path = os.path.join(sys.prefix, path)
-                yield path, checksum, size
+                results.append((path, checksum, size))
+        return results
 
     def get_resource_path(self, relative_path):
         with self.get_distinfo_file('RESOURCES') as resources_file:
@@ -197,7 +198,8 @@
         :type local: boolean
         :returns: iterator of (path, md5, size)
         """
-        return self._get_records(local)
+        for result in self._get_records(local):
+            yield result
 
     def uses(self, path):
         """