【发布时间】:2021-07-23 01:03:32
【问题描述】:
我有一个结构如下的文件夹系统:
folderA
- folder1
- file1A.txt
- folder2
- file2A.txt
- folder3
- file3A.txt
folderB
- folder1
- file1B.txt
- folder2
- file2B.txt
- folder3
- file3B.txt
我希望更改顺序,使字母文件夹上方的编号文件夹为:
folder1
- folderA
- file1A.txt
- folderB
- file1B.txt
folder2
- folderA
- file2A.txt
- folderB
- file2B.txt
folder3
- folderA
- file3A.txt
- folderB
- file3B.txt
下面是一段代码,用于构建初始目录结构的MWE:
import os
import shutil
import string
root_dir = os.getcwd()
os.chdir('/home/alletro/Tc-97/tools')
os.makedirs('master', exist_ok=True)
os.chdir('master')
master_dir = os.getcwd()
top_tier = [f'folder{i}' for i in range(1,4)]
second_tier = [f'folder{i}' for i in list(string.ascii_uppercase)[:4]]
for folder in top_tier:
os.chdir(master_dir)
os.makedirs(folder, exist_ok=True)
os.chdir(folder)
fold_dir = os.getcwd()
for sub_folder in second_tier:
os.chdir(fold_dir)
os.makedirs(sub_folder, exist_ok=True)
os.chdir(sub_folder)
os.mknod("newfile.txt")
os.chdir(root_dir)
我找到了一个解决方案,可以让我获得目录树的字典:
def get_directory_structure(rootdir):
"""
Creates a nested dictionary that represents the folder structure of rootdir
"""
dir = {}
rootdir = rootdir.rstrip(os.sep)
start = rootdir.rfind(os.sep) + 1
for path, dirs, files in os.walk(rootdir):
folders = path[start:].split(os.sep)
subdir = dict.fromkeys(files)
parent = reduce(dict.get, folders[:-1], dir)
parent[folders[-1]] = subdir
return dir
然而,我正在努力寻找从这里到哪里去。
【问题讨论】:
标签: python directory shutil python-os