algorithm-in-python/tree_link.py

42 lines
1.2 KiB
Python
Raw Normal View History

2018-07-11 19:26:24 +08:00
# coding: utf-8
import os
import argparse
#命令行输入参数处理
parser = argparse.ArgumentParser()
parser.add_argument('-p','--path',default='.')
parser.add_argument('-f','--fileinclude',default=False)
parser.add_argument('-d','--depth', type = int, default = 2)
#获取参数
args = parser.parse_args()
FILE = args.fileinclude
PATH = args.path
DEPTH = args.depth
def mklink(path):
return '* [{name}]({path})'.format(name=os.path.basename(path),path=path)
def clean(paths):
ret = []
for path in paths:
name = os.path.basename(path)
if not ( name.startswith('.') or name.startswith('__')):
ret.append(path)
return ret
def tree(path='.',depth=2):
li = os.listdir(path) if os.path.isdir(path) else [path]
items = [os.path.join(path,i) for i in li if not i.startswith('.')]
items = clean(items)
if not FILE: items = [i for i in items if os.path.isdir(i)]
if depth==1:
return [mklink(path)] + [' '*4 + mklink(i) for i in items]
else:
uls = [tree(i,depth-1) for i in items]
return [mklink(path)] + [' '*4 + li for ul in uls for li in ul]
if __name__ =='__main__':
print('\n'.join(tree(PATH,DEPTH)))