Skip to main content

Walk directories trees with os.scandir, generating DirEntry objects

Project description

scanwalk

scanwalk.walk() walks a directory tree, generating DirEntry objects. It's an alternative to os.walk() modelled on os.scandir().

>>> import scanwalk
>>> for entry in scanwalk.walk('data/demo'):
...     print(entry.path, entry.name, entry.is_dir(), entry.is_file())
...
data/demo demo True False
data/demo/adir adir True False
data/demo/adir/anotherfile anotherfile False True
data/demo/adir/anotherdir anotherdir True False
data/demo/afile afile False True

a rough equivalent with os.walk() would be

>>> import os
>>> for parent, dirs, files in os.walk('data/demo'):
...     print(parent, name, True, False)
...     for name in dirs:
...         print(os.path.join(parent, name), name, True, False)
...     for name in files:
...         print(os.path.join(parent, name), name, False, True)
...
data/demo demo True False
data/demo/adir adir True False
data/demo/afile afile False True
data/demo/adir/anotherdir anotherdir True False
data/demo/adir/anotherfile anotherfile False True

Notable features and differences between scanwalk.walk() and os.walk()

  • scanwalk generates a flat stream of DirEntry objects. Nested loops aren't needed.
  • scanwalk doesn't sort entries. Directories and files are intermingled (within a given parent directory).
  • scanwalk descends directories as it encounters them. It's neither depth first or breadth first. os.walk() supports both.
  • scanwalk doesn't build intermediate lists
  • scanwalk doesn't need an onerror() callback.
  • scanwalk can be 10-20% faster.

Installation

python -m pip install scanwalk

Requirements

  • Python 3.6+

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scanwalk-0.0.1.tar.gz (3.2 kB view details)

Uploaded Source

Built Distribution

scanwalk-0.0.1-py2.py3-none-any.whl (3.4 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file scanwalk-0.0.1.tar.gz.

File metadata

  • Download URL: scanwalk-0.0.1.tar.gz
  • Upload date:
  • Size: 3.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for scanwalk-0.0.1.tar.gz
Algorithm Hash digest
SHA256 0770ed6f0b6dcdacf8894b84de89d2089ecfba7143174961be9584b13153572c
MD5 9c3f0c5a806128078dcc9183c18657a9
BLAKE2b-256 e1f03859026fc7d12d2e2c01918a41e3cabb8fa56a5e54a2be6b125b7572acd2

See more details on using hashes here.

File details

Details for the file scanwalk-0.0.1-py2.py3-none-any.whl.

File metadata

  • Download URL: scanwalk-0.0.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 3.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.5

File hashes

Hashes for scanwalk-0.0.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b70903ccf149353ad697d6fbe93899f77180fef07cb10c377019926f1b29f838
MD5 5337fb4fd5a604cd66ca61078ca331da
BLAKE2b-256 79cbc614369b4c6cef365a1be98bd47c1d2fadddaaccdadf21f14b92d61cb8d3

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page