User Tools

Site Tools


task_boiler

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
task_boiler [2023/05/03 16:40] – [find depth of a file or directory] admintask_boiler [2024/01/23 22:55] (current) raju
Line 3: Line 3:
  
 Start the first heading with "=====" Start the first heading with "====="
- 
-===== find depth ===== 
-==== find depth of a file or directory ==== 
-<code> 
-import os 
-  
-def get_depth(file_or_dir_path): 
-    abs_path = os.path.abspath(os.path.expanduser(file_or_dir_path)) 
-    depth = os.path.normpath(abs_path).count(os.sep) 
-    return depth 
-</code> 
- 
-Examples: 
-<code> 
-In [2]:  
-os.path.abspath(os.path.expanduser('~')) 
-Out[2]:  
-'/home/rajulocal' 
- 
-In [3]:  
-get_depth('~') 
-Out[3]:  
-2 
- 
-In [4]:  
-get_depth('/home/rajulocal') 
-Out[4]:  
-2 
- 
-In [5]:  
-get_depth('/home/rajulocal/') 
-Out[5]:  
-2 
- 
-In [6]:  
-get_depth('/home/rajulocal/foo') 
-Out[6]:  
-3 
- 
-In [7]:  
-get_depth('/') 
-Out[7]:  
-1 
- 
-In [8]:  
-get_depth('/home') 
-Out[8]:  
-1 
-</code> 
- 
-Using Python 3.10.6, Ipython 8.6.0 
- 
-tags | measure the depth of a file system path 
- 
-See also: 
-  * https://stackoverflow.com/questions/31528199/how-to-measure-the-depth-of-a-file-system-path - shows how to do it with various command line tools. 
-  * https://docs.python.org/3/library/os.path.html 
- 
-==== depth of a directory relative to a parent directory ==== 
-<code> 
-import os 
-  
-def dir_depth_relative(child, parent): 
-    child = os.path.abspath(os.path.expanduser(child)) 
-    parent = os.path.abspath(os.path.expanduser(parent)) 
-    assert child.startswith(parent), "child parent relation violated. parent = " + parent + ', child = ' + child 
-    name_space = os.path.relpath(child, parent) 
-    level = os.path.normpath(name_space).count(os.sep) + 1 if name_space != '.' else 0 
-    return level 
-</code> 
- 
-Examples: 
-<code> 
-In [2]:  
-[dir_depth_relative('~', '~'), dir_depth_relative('~', '~/'), 
- dir_depth_relative('~/work', '~'), dir_depth_relative('~/work.txt', '~'), 
- dir_depth_relative('/tmp/foo', '/tmp'), dir_depth_relative('/tmp', '/tmp'), 
- dir_depth_relative('/tmp/foo/bar', '/tmp')] 
-Out[2]:  
-[0, 0, 1, 1, 1, 0, 2] 
- 
-In [3]:  
-dir_depth_relative('/tmp', '/tmp/foo') 
---------------------------------------------------------------------------- 
-AssertionError                            Traceback (most recent call last) 
-Cell In [3], line 1 
-----> 1 dir_depth_relative('/tmp', '/tmp/foo') 
- 
-Cell In [1], line 6, in dir_depth_relative(child, parent) 
-      4 child = os.path.abspath(os.path.expanduser(child)) 
-      5 parent = os.path.abspath(os.path.expanduser(parent)) 
-----> 6 assert child.startswith(parent), "child parent relation violated. parent = " + parent + ', child = ' + child 
-      7 name_space = os.path.relpath(child, parent) 
-      8 level = os.path.normpath(name_space).count(os.sep) + 1 if name_space != '.' else 0 
- 
-AssertionError: child parent relation violated. parent = /tmp/foo, child = /tmp 
-</code> 
  
task_boiler.1683132026.txt.gz · Last modified: 2023/05/03 16:40 by admin