首页 > 解决方案 > 使用 python 脚本从文本文件创建文件夹目录

问题描述

我有一个包含数百行的文本文件,每行包含一个数字来表示文件夹/文件应该所在的级别和文件夹/文件名。因为层次结构太大,我想制作一个脚本来自动制作这个目录/子目录。

示例文本文件

 .0.  Folder Name a  
  .1. Folder Name b  
   .2. Folder Name c  
   .2. Folder Name c2  
  .1. Folder Name d  
   .2. Folder Name e  
   .2. Folder Name e2  
    .3. Folder Name f  

我假设我需要逐行阅读并使用 os.mkdir,但我不知道如何降低目录级别。

#path of file
import os

with open('Tree.txt', 'r') as t:
 for line in t:
  readline(.{Level}. {FolderName})
    if Level == '0'
     os.mkdir(FolderName)
    else if Level == '1'
     # go down and os.mkdir(FolderName)

标签: python

解决方案


可以os.mkdir(path)用来创建目录。

您还可以使用以下正则表达式来解析您的字符串:

"\.(\d+)\. Folder Name ([a-zA-Z\d]+)"

然后你可以使用递归来创建目录树:

import os
import re

regex = r"\.([\d+])\. Folder Name ([a-zA-Z\d]+)"


def create_dir_tree(dir_list, current_level, current_path):
    for idx, line in enumerate(dir_list):
        matcher = re.match(regex, line)
        if not matcher:
            return
        level = int(matcher.group(1))
        dir_name = matcher.group(2)

        if level <= current_level:
            return
        if level != current_level + 1:
            continue

        new_path = os.path.join(current_path, dir_name)
        os.mkdir(new_path)

        create_dir_tree(dir_list[idx + 1:], level, new_path)


list = [".0. Folder Name a",
        ".1. Folder Name b",
        ".2. Folder Name c",
        ".2. Folder Name c2",
        ".1. Folder Name d",
        ".2. Folder Name e",
        ".2. Folder Name e2",
        ".3. Folder Name f"]

create_dir_tree(list, -1, os.path.expanduser("~/Desktop/untitled folder"))

现在只需将文件读取到列表中


推荐阅读