mirror of https://github.com/python/cpython.git
[3.13] gh-127541: Update os.walk example (GH-127765) (GH-131869)
gh-127541: Update os.walk example (GH-127765)
Update os.walk example to be more modern, skip `__pycache__` dirs rather than `CVS` dirs.
(cherry picked from commit a5949986d6
)
Co-authored-by: Totosuki <116938397+totosuki@users.noreply.github.com>
Co-authored-by: Bénédikt Tran <10796600+picnixz@users.noreply.github.com>
This commit is contained in:
parent
1059b0cc84
commit
9ffa80f21e
|
@ -3621,16 +3621,16 @@ features:
|
||||||
|
|
||||||
This example displays the number of bytes taken by non-directory files in each
|
This example displays the number of bytes taken by non-directory files in each
|
||||||
directory under the starting directory, except that it doesn't look under any
|
directory under the starting directory, except that it doesn't look under any
|
||||||
CVS subdirectory::
|
``__pycache__`` subdirectory::
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import join, getsize
|
from os.path import join, getsize
|
||||||
for root, dirs, files in os.walk('python/Lib/email'):
|
for root, dirs, files in os.walk('python/Lib/xml'):
|
||||||
print(root, "consumes", end=" ")
|
print(root, "consumes", end=" ")
|
||||||
print(sum(getsize(join(root, name)) for name in files), end=" ")
|
print(sum(getsize(join(root, name)) for name in files), end=" ")
|
||||||
print("bytes in", len(files), "non-directory files")
|
print("bytes in", len(files), "non-directory files")
|
||||||
if 'CVS' in dirs:
|
if '__pycache__' in dirs:
|
||||||
dirs.remove('CVS') # don't visit CVS directories
|
dirs.remove('__pycache__') # don't visit __pycache__ directories
|
||||||
|
|
||||||
In the next example (simple implementation of :func:`shutil.rmtree`),
|
In the next example (simple implementation of :func:`shutil.rmtree`),
|
||||||
walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
|
walking the tree bottom-up is essential, :func:`rmdir` doesn't allow
|
||||||
|
@ -3683,16 +3683,16 @@ features:
|
||||||
|
|
||||||
This example displays the number of bytes taken by non-directory files in each
|
This example displays the number of bytes taken by non-directory files in each
|
||||||
directory under the starting directory, except that it doesn't look under any
|
directory under the starting directory, except that it doesn't look under any
|
||||||
CVS subdirectory::
|
``__pycache__`` subdirectory::
|
||||||
|
|
||||||
import os
|
import os
|
||||||
for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
|
for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'):
|
||||||
print(root, "consumes", end="")
|
print(root, "consumes", end="")
|
||||||
print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
|
print(sum([os.stat(name, dir_fd=rootfd).st_size for name in files]),
|
||||||
end="")
|
end="")
|
||||||
print("bytes in", len(files), "non-directory files")
|
print("bytes in", len(files), "non-directory files")
|
||||||
if 'CVS' in dirs:
|
if '__pycache__' in dirs:
|
||||||
dirs.remove('CVS') # don't visit CVS directories
|
dirs.remove('__pycache__') # don't visit __pycache__ directories
|
||||||
|
|
||||||
In the next example, walking the tree bottom-up is essential:
|
In the next example, walking the tree bottom-up is essential:
|
||||||
:func:`rmdir` doesn't allow deleting a directory before the directory is
|
:func:`rmdir` doesn't allow deleting a directory before the directory is
|
||||||
|
|
12
Lib/os.py
12
Lib/os.py
|
@ -337,12 +337,12 @@ def walk(top, topdown=True, onerror=None, followlinks=False):
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import join, getsize
|
from os.path import join, getsize
|
||||||
for root, dirs, files in os.walk('python/Lib/email'):
|
for root, dirs, files in os.walk('python/Lib/xml'):
|
||||||
print(root, "consumes ")
|
print(root, "consumes ")
|
||||||
print(sum(getsize(join(root, name)) for name in files), end=" ")
|
print(sum(getsize(join(root, name)) for name in files), end=" ")
|
||||||
print("bytes in", len(files), "non-directory files")
|
print("bytes in", len(files), "non-directory files")
|
||||||
if 'CVS' in dirs:
|
if '__pycache__' in dirs:
|
||||||
dirs.remove('CVS') # don't visit CVS directories
|
dirs.remove('__pycache__') # don't visit __pycache__ directories
|
||||||
|
|
||||||
"""
|
"""
|
||||||
sys.audit("os.walk", top, topdown, onerror, followlinks)
|
sys.audit("os.walk", top, topdown, onerror, followlinks)
|
||||||
|
@ -468,13 +468,13 @@ def fwalk(top=".", topdown=True, onerror=None, *, follow_symlinks=False, dir_fd=
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
import os
|
import os
|
||||||
for root, dirs, files, rootfd in os.fwalk('python/Lib/email'):
|
for root, dirs, files, rootfd in os.fwalk('python/Lib/xml'):
|
||||||
print(root, "consumes", end="")
|
print(root, "consumes", end="")
|
||||||
print(sum(os.stat(name, dir_fd=rootfd).st_size for name in files),
|
print(sum(os.stat(name, dir_fd=rootfd).st_size for name in files),
|
||||||
end="")
|
end="")
|
||||||
print("bytes in", len(files), "non-directory files")
|
print("bytes in", len(files), "non-directory files")
|
||||||
if 'CVS' in dirs:
|
if '__pycache__' in dirs:
|
||||||
dirs.remove('CVS') # don't visit CVS directories
|
dirs.remove('__pycache__') # don't visit __pycache__ directories
|
||||||
"""
|
"""
|
||||||
sys.audit("os.fwalk", top, topdown, onerror, follow_symlinks, dir_fd)
|
sys.audit("os.fwalk", top, topdown, onerror, follow_symlinks, dir_fd)
|
||||||
top = fspath(top)
|
top = fspath(top)
|
||||||
|
|
Loading…
Reference in New Issue