python - 使用 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)
解决方案
可以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"))
现在只需将文件读取到列表中
推荐阅读
- go - go中没有方法的多态性
- java - 使用 Gradle Kotlin DSL 和 Intellij 的自定义测试源集
- scala - sbt 1.2.8 在非 sudo 模式下抛出错误(fedora)
- ruby-on-rails - 用于多个组织的 Rails 单点登录和 SAML
- c++ - 如何使用自己的函数将浮点数舍入到上下值c ++?
- javascript - 如何按按另一个数组的顺序找到的键对对象数组进行排序
- javascript - vuejs 在状态改变时更新所有组件
- spring-boot - ActiveMQ Artemis 问题 - java.lang.NoSuchFieldError: WRITE_BUFFER_WATER_MARK
- php - 添加/附加基于会话 PHP 的用户 ID
- mapbox - 在 Openlayers 5.3.0 中显示我的 Mapbox 地图?