最近在整理家里学习资料的时候,由于年代久远,找不到我想要找的文件,windows文件搜索速度感觉太慢。于是想要生成一份类似文件索引的东西来显示所有资料,让我可以快速的找到需要的资料路径
直接上代码
import os
import datetime
def generate_folder_tree(folder_path, indent=0):
"""
生成文件夹树状图
:param folder_path: 文件夹路径
:param indent: 缩进级别,用于显示树状图的层级关系
"""
for file_name in os.listdir(folder_path):
link_html = ""
#产生一个绝对路径,以便后面用作超链接路径
file_path = os.path.join(folder_path, file_name)
folder_link = file_path
folder_link = folder_link.replace("\\", "/")
x = ' ' * indent + '- ' + file_name
# <pre> </pre> 可以保留HTML原始文本中的空格和换行符
# <br> 换行符,也可以用 </n>代替
# {folder_link} 超链接路径
# {x} 写入 html 中的 字符串
link_html = f'<pre><a href="{folder_link}">{x}</a></n></pre>'
with open("myFolderPath.html", "a") as file:
file.write(link_html)
if os.path.isdir(file_path):
generate_folder_tree(file_path, indent=indent+4)
# 调用函数生成文件夹树状图
now = datetime.datetime.now()
with open("myFolderPath.html", "w") as file:
file.write(str(now))
generate_folder_tree("C:/test")
如上,此代码可以生成一份叫做 myFolderPath.html
的 html文件,此文件中将显示 C:/test
里所有的文件夹和文件,以类似树状图的方式显示,生成文件后,以浏览器打开 html文件,文件内显示如下:
在这个图中,所有文件均可打开,浏览器如果不能跳转,就使用右键打开新的页面,即可查看内容。假如是文件夹,即可显示文件夹内的内容,假如是文件,则可直接打开。
但是打开文件夹路径后,点击返回上层会把其他与C:/test
同级文件夹或上级文件夹一同显示出来,但还不知道怎么解决。我的初衷是让他只显示C:/test
里面的所有文件即文件夹…不过暂且也能用了。