Determine the maximum depth and path length within the current (or a specified) directory tree.
Project description
deepest
“There are older and fouler things than Orcs in the deep places of the world.”
— Gandalf, from “The Lord of the Rings: The Fellowship of the Ring”, by J.R.R. Tolkien
deepest — A cross-platform (and cross-language) command-line utility used to determine the maximum depth of the current (or a specified) directory tree.
Available in both Python and C++ flavors (via the ShedSkin libraries).
Rationale
Needed a way to determine how close a project was getting to the 8-subdirectory limit defined by ISO-9660.
Needed a way to determine how close to MAX_PATH directories were getting.
MAX_PATH is defined as 260 characters on Windows: 3 for the drive (C:\), 1 for the terminating NULL character at the end, and 256 for directories, back-slashes, filenames, and extensions in the middle.
“Yes, but… Why Python?”
It’s faster for prototyping. (Bias… I’m just more familiar with it.)
It gave me an excuse to try out ShedSkin. :-)
Requirements
Python >= 2.7, 3.2, 3.3, 3.4, 3.5, 3.6
ShedSkin >= 0.9.3, 0.9.4 — optional
g++ >= 4.6.2 or clang++ >= 3.2 — optional
MinGW/MSYS (2012-04-26 catalog) — optional
Installation
Python (Users):
pip install deepest
Python (Developers):
git clone git@github.com:markgollnick/deepest.git cd deepest python setup.py build install # Alternatively... make python pip install dist/deepest-*.tar.gz
C++:
Download and install ShedSkin (instructions).
Run the following:
./3to2 # Make some minor adjustments for ShedSkin compatibility cd deepest # This is the dir INSIDE the project's root dir shedskin deepest.py make # Alternatively, from the project's root dir... make cpp
Usage
Python:
Once installed, you can use it as a script…
$ deepest . breadth of dirs examined longest pathname deepest directory 13 58 7 longest file: ./workspace/dwarves/digging/deep/deeper/deepest/balrog.log deepest path: ./workspace/some/really/long/directory/chain/here
…or, you can use it as a library:
>>> import deepest >>> deepest.get_depth('c:\\workspace') ('c:\\workspace\\some\\really\\long\\directory\\chain\\here', 7) >>> deepest.get_length('c:\\workspace') ('c:\\workspace\\dwarves\\digging\\deep\\deeper\\deepest\\balrog.log', 59)
C++:
Once compiled, it is a (notably faster) alternative to the Python script:
$ deepest c:\\workspace breadth of dirs examined longest pathname deepest directory 13 59 7 longest file: c:\workspace\dwarves\digging\deep\deeper\deepest\balrog.log deepest path: c:\workspace\some\really\long\directory\chain\here
Speed
In a project containing well over 5000 directories with a max depth of 13, the Python and C++ versions (compiled with clang-503.0.40) were pitted against each other. Both versions were run three times each on a Late 2013 Mac Book Pro.
These are the averaged results:
$ time deepest # Python script ... real 0m0.423s user 0m0.244s sys 0m0.160s $ time deepest # C++ binary ... real 0m0.169s user 0m0.063s sys 0m0.101s
In practical observation, using the compiled C++ version may gain you anywhere from a 10% to a whopping 60% boost in speed. :-)
License
Boost Software License, Version 1.0: <http://www.boost.org/LICENSE_1_0.txt>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file deepest-2.0.1.tar.gz
.
File metadata
- Download URL: deepest-2.0.1.tar.gz
- Upload date:
- Size: 8.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9f06e126b0e852c8135dea5e72c7f0de3037d925eab15145156eceacef025aa6 |
|
MD5 | 2f134a480e34a82c7451d15150a6de77 |
|
BLAKE2b-256 | f6a4a8f707e64d9ee6953b7eb62929e8c285d6ce2130533b4e996a8c4f714646 |