Issue #25995: os.walk() no longer uses FDs proportional to the tree depth.
diff --git a/Lib/os.py b/Lib/os.py
index 674a7d7..a49e7ce 100644
--- a/Lib/os.py
+++ b/Lib/os.py
@@ -369,22 +369,13 @@
             # Note that scandir is global in this module due
             # to earlier import-*.
             scandir_it = scandir(top)
+        entries = list(scandir(top))
     except OSError as error:
         if onerror is not None:
             onerror(error)
         return
 
-    while True:
-        try:
-            try:
-                entry = next(scandir_it)
-            except StopIteration:
-                break
-        except OSError as error:
-            if onerror is not None:
-                onerror(error)
-            return
-
+    for entry in entries:
         try:
             is_dir = entry.is_dir()
         except OSError: