首页 > 解决方案 > 是否有 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 输出的东西,但从列表或文件中获取信息,而不是从本地系统中获取信息。对此有什么想法或方向吗?

标签: pythonpython-3.xlistfiletree

解决方案


你可以用一些逻辑解决这个问题

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))


推荐阅读