python查看项目结构、tree.py、tree_details.py

张开发
2026/4/14 15:09:21 15 分钟阅读

分享文章

python查看项目结构、tree.py、tree_details.py
文章目录tree.py 不带class类tree_details 带class类问ai时反复需要描述项目结构描述的不清生成的方案大大不同。先拿到项目结构丢给ai再问问题准确率就会大大提高。试了几种方法如choco的treepython的原生方法等。实测原生python就很快那就它了。注tree.py和tree_details.py都要创建在根目录下千万别画蛇添足放到utils目录下。tree.py 不带class类项目根目录下创建tree.py代码importos# 直接跳过这些目录不扫描IGNORE{venv,.venv,__pycache__,.git,.idea,.vscode}defshow(path,prefix):itemssorted([fforfinos.listdir(path)iffnotinIGNORE])foridx,nameinenumerate(items):is_lastidxlen(items)-1connector└── ifis_lastelse├── print(f{prefix}{connector}{name})fullos.path.join(path,name)ifos.path.isdir(full):new_prefixprefix( ifis_lastelse│ )show(full,new_prefix)if__name____main__:show(.)tree_details 带class类项目根目录下创建tree_details代码importosimportast# 自动跳过的目录IGNORE{venv,.venv,__pycache__,.git,.idea,.vscode,node_modules}# 获取一个 .py 文件里的所有 class 名称defget_classes(file_path):try:withopen(file_path,r,encodingutf-8)asf:treeast.parse(f.read())classes[node.namefornodeinast.walk(tree)ifisinstance(node,ast.ClassDef)]returnclassesexcept:return[]# 打印树形结构 classdefshow(path,prefix):itemssorted([fforfinos.listdir(path)iffnotinIGNORE],keylambdax:(0ifos.path.isdir(os.path.join(path,x))else1,x))foridx,nameinenumerate(items):full_pathos.path.join(path,name)is_lastidxlen(items)-1connector└── ifis_lastelse├── # 打印文件/文件夹print(f{prefix}{connector}{name})# 如果是文件夹 → 递归ifos.path.isdir(full_path):new_prefixprefix( ifis_lastelse│ )show(full_path,new_prefix)# 如果是 .py 文件 → 打印里面的 classelifname.endswith(.py):classesget_classes(full_path)ifclasses:new_prefixprefix( ifis_lastelse│ )forcinclasses:print(f{new_prefix}─── class:{c})if__name____main__:print( 项目结构含所有 class\n)show(.)print(\n✅ 已自动跳过 venv / 第三方库)

更多文章