python - 是否有 python 模块从路径/文件的列表或索引创建文件树(不是本地系统)
问题描述
在一个学校项目上工作......我有一个包含整个目录列表(大约 400K 项)的 python 列表对象(从文本文件中获得)。是否有一个模块可以自动将此列表或文本文件组织成文件树结构?
例如,根目录启动列表“/”。然后是其中的第一个文件夹,一直到路径中的最后一个文件"/folder1/sub-folder_last/lastfile.txt
这一直到最后一个项目"/last_folder_in_root"
到最后一个子文件夹"/last_folder_in_root/last_sub_folder/last_file.txt"
我一直在寻找一个好的起点,但搜索的模糊性让我除了 os、os walk 项目之外什么也没有。希望已经有一些东西可以贯穿这个并用标签或类似的东西分隔子项目。
最终输出类似于:
/
/first_folder
/first_sub_folder
/file.txt
/second_folder
/last_folder
/last_sub_fodler
/last_file.txt
我搜索了几个库,但找不到支持此功能的库。这不涉及os.walk,它不适用于本地文件系统。它来自 txt 文件或列表。
基本上试图找到类似于 os.walk 输出的东西,但从列表或文件中获取信息,而不是从本地系统中获取信息。对此有什么想法或方向吗?
解决方案
你可以用一些逻辑解决这个问题
with open('filename.txt') as in_file:
for line in in_file.readlines():
as_list = line.split('/')
# special case for the root
if len(as_list) == 2 and as_list[0] == '' and as_list[-1] == '\n':
indent = 0
else:
indent = (len(as_list) - 1) * 4 + len(as_list[-1]) + 1
output = '/{}'.format(as_list[-1].strip('\n'))
print(output.rjust(indent))
推荐阅读
- javascript - 表单提交返回内容类型为 application/json 而不是 text/html 的响应
- c - “文件指针”,“流”,“文件描述符”和......“文件”之间的区别?
- oracle - Oracle Apex 在批准者使用触发器和 Apex 邮件批准问题时发送电子邮件
- javascript - 在 codepen 中,Intersection 观察者的行为与浏览器窗口不同
- c# - 使用 Selenium C# 时的弹出/警报窗口
- maven - 跳过测试时,有没有办法使 mvn clean install 失败?
- javascript - vue-router 无法解析异步组件默认值:TypeError:无法读取未定义的属性“调用”
- android - React Native 未检测到 Android 模拟器
- verilog - 模块输入的宽度可以在模块内部确定吗?
- java - 未根据 Log4j2.properties 加载日志