Mercurial > hg > config
annotate python/walk.py @ 929:7c4be71a560b default tip
remove old aliases
| author | Jeff Hammel <k0scist@gmail.com> |
|---|---|
| date | Mon, 20 Oct 2025 15:22:19 -0700 |
| parents | 0afeb265da7f |
| children |
| rev | line source |
|---|---|
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
1 #!/usr/bin/env python |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
2 |
|
809
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
3 """ |
|
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
4 illustration of walking a directory structure |
|
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
5 """ |
|
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
6 |
| 810 | 7 # imports |
|
809
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
8 import argparse |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
9 import os |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
10 import sys |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
11 |
| 810 | 12 |
| 13 def ensure_dir(path): | |
| 14 """ensures `path` is a directory""" | |
| 15 return os.path.isdir(path) | |
| 16 | |
| 17 | |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
18 def all_files(directory): |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
19 filenames = [] |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
20 for dirpath, dirnames, files in os.walk('/home/jhammel/music'): |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
21 filenames.extend([os.path.join(dirpath, f) for f in files]) |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
22 return sorted(filenames) |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
23 |
|
809
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
24 |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
25 def main(args=sys.argv[1:]): |
|
809
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
26 """CLI""" |
|
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
27 |
| 810 | 28 |
| 29 # parse command line | |
| 30 | |
| 31 # sanity | |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
32 if not args: |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
33 print "Usage: %s directory [directory] [...]" % os.path.basename(sys.argv[0]) |
| 810 | 34 |
| 35 # process command line | |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
36 for arg in args: |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
37 if os.path.isdir(arg): |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
38 for i in all_files(arg): |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
39 print i |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
40 elif os.path.isfile(arg): |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
41 print os.path.abspath(arg) |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
42 else: |
| 810 | 43 sys.stderr.write("'%s' not a file or directory\n" % arg) |
| 44 | |
|
809
b3f75f1361c5
minor mostly formatting fixes
Jeff Hammel <k0scist@gmail.com>
parents:
160
diff
changeset
|
45 |
|
160
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
46 if __name__ == '__main__': |
|
83928b2f2776
add file walking example code
Jeff Hammel <jhammel@mozilla.com>
parents:
diff
changeset
|
47 main() |
