Python Glossary Русский

Python 3.3+Linux · macOSosfunction

os.fwalk

os — tree walking

Like os.walk, but also yields a directory file descriptor. Availability: Unix.

Syntax

os.fwalk(...)

It yields a directory descriptor, and operations relative to it (stat(name, dir_fd=fd)) guard against a directory being swapped for a symlink mid-walk. The descriptor is valid only until the next step — call os.dup to keep it. Unlike other functions it does not follow symlinks by default (follow_symlinks=False).

Examples

import os
walker = os.fwalk('/etc')  # генератор держим в переменной: пока он жив, жив и дескриптор каталога
step = next(walker)
print(len(step))  # → 4 — (dirpath, dirnames, filenames, dirfd); у os.walk элементов 3
print(step[0])  # → ? только Unix: /etc — обход начинается с корня дерева
print(os.stat(step[2][0], dir_fd=step[3]).st_size)  # → ? только Unix: размер первого файла в /etc, полученный через дескриптор каталога, а не по пути — ради этого fwalk и берут
print(list(os.fwalk('/нет-такого')))  # → FileNotFoundError — в отличие от os.walk, который на несуществующем каталоге молча даёт []

See also

Open in the full glossarydocs.python.orgReport an inaccuracy