====== Python Dir Tree Crawling ======
On some system like my [[wp>Linux]]. A Tree command is not provided by default. I have several choices:
* the **find** command(no indention by default, need tuning)
* **[[man>ls]] -R**(ugly by default, needs tuning)
* a Linux tree command [[http://mama.indstate.edu/users/ice/tree/]]
* Other [[wp>Perl]]/[[wp>Python]] solution.
==== Python Solution ====
Python provides os.walk() method.
A very simple pure python solution:
# -*- coding: utf-8 -*-
import os
path = "."
def printFiles(dirList, spaceCount):
for file in dirList:
print "/".rjust(spaceCount+1) + file
def printDirectory(dirEntry):
print dirEntry[0] + "/"
printFiles(dirEntry[2], len(dirEntry[0]))
tree = os.walk(path)
for directory in tree:
printDirectory(directory)
==== Other Thoughts ====
Hmm... I believe many shell geek have their own tree script.
Rakes my brain to bring indention so this is a half-way script based on ls -R:
#!/bin/bash
ls -R | sed -e 's/:$//' -e 's/[^-][^\/]*\//--/g' -e 's/^/ /' -e 's/-/|/'
And for perl, there should be some shinning ones on [[wp>CPAN]].
Guess ppl will use the File::Find module:
#!/usr/bin/perl
use File::Find;
use File::Basename;
@ARGV=qw(.) if not @ARGV;
find(\&do, @ARGV);
sub do {
$fpath=$File::Find::name;
$fname=basename($fpath);
print "$fname $fpath\n";
}
My perl knowledge is too limited... Have file name and dir name on same line easy for further piping...
Shhh ugly... Too much to learn!
{{tag>python shell cli}}
{{page>:widgets:ad_banner_1&nofooter&noeditbtn}}
~~META:
creator = MeaCulpa
&date created = 2010-01-27
~~
~~
~~NOTOC~~
~~LINKBACK~~
~~DISCUSSION~~