import os
def my_pwd_v3(path, recurs=True, rt_folder=True, rt_file=True, tree=True, mark=False):
'''
path: 路徑
recurs: 遞迴T / 本層F
rt_folder: 顯示資料夾T / 不顯示F
rt_file: 顯示檔案T / 不顯示F
tree: 樹狀圖顯示T / 不顯示F
mark: 不顯示檔案或資料夾F / 顯示:T
'''
dlen = 4
dash, sp = '─',
st_c = '├' + dash * dlen + sp
st_n = '│' + ' ' * dlen + sp
st_l = '└' + dash * dlen + sp
st_s = ' ' + ' ' * dlen + sp
folders, files, fail = [], [], []
view = []
fstr = os.path.basename((path))
view.append(fstr)
def my_pwd_child(path, st=''):
try:
for f in os.listdir(path):
if f != os.listdir(path)[-1]:
shtr = st + st_c
past = st + st_n
else:
shtr = st + st_l
past = st + st_s
full_path = os.path.join(path, f)
fstr = os.path.basename(f)
if os.path.isdir(full_path) and rt_folder:
folders.append(full_path)
fstr = fstr + ' (dir)' if mark else fstr
t = shtr + fstr
view.append(t)
if recurs:
my_pwd_child(full_path, past)
elif os.path.isfile(full_path) and rt_file:
files.append(full_path)
fstr = fstr + ' (file)' if mark else fstr
t = shtr + fstr
view.append(t)
except:
fail.append('無法讀取 ' + path)
my_pwd_child(path)
if tree:
return view + fail
else:
return folders + files + fail
def main():
pwd = r'D:\d0'
k = my_pwd_v3(pwd, recurs=True, rt_folder=True,
rt_file=True, tree=True, mark=False)
for _ in k:
pass
print(_)
if __name__ == '__main__':
main()