python - 构建我的目录和文件路径的字典以选择名称包含特定字符串的所有文件
问题描述
我有一个名为“IC”的根目录。“IC”包含一堆子目录,这些子目录包含子目录,子目录包含子子目录等等。有没有一种简单的方法可以将所有子...目录文件移动到它们的父子目录中,然后删除空的子...目录。
到目前为止,我已经制作了这种嵌套循环的怪物来构建文件路径和子目录的字典作为包含文件路径等的字典。然后我将做一些事情来遍历字典并选择所有包含“IC”的文件和子目录它们在。我需要知道哪些目录包含“IC”文件。我还需要将所有包含“IC”的文件移动到顶级子目录(参见代码中的标签)
import os, shutil
rootdir = 'data/ICs'
def dir_tree(rootdir):
IC_details = {}
# This first loop is what I'm calling the top level subdirectories. They are the three
# subdirectories inside the directory 'data/ICs'
for i in os.scandir(rootdir):
if os.path.isdir(i):
IC_details[i.path] = {}
for i in IC_details:
for j in os.scandir(i):
if os.path.isdir(j.path):
IC_details[i][j.name] = {}
elif os.path.isfile(j.path):
IC_details[i][j.name] = [j.path]
for j in IC_details[i]:
if os.path.isdir(os.path.join(i,j)):
for k in os.scandir(os.path.join(i,j)):
if os.path.isdir(k.path):
IC_details[i][j][k.name] = {}
elif os.path.isfile(k.path):
IC_details[i][j][k.name] = [k.path]
for k in IC_details[i][j]:
if os.path.isdir(os.path.join(i,j,k)):
for l in os.scandir(os.path.join(i,j,k)):
if os.path.isdir(l.path):
IC_details[i][j][k][l.name] = {}
elif os.path.isfile(l.path):
IC_details[i][j][k][l.name] = [l.path]
for l in IC_details[i][j][k]:
if os.path.isdir(os.path.join(i,j,k,l)):
for m in os.scandir(os.path.join(i,j,k,l)):
if os.path.isfile(m.path):
IC_details[i][j][k][l][m.name] = [m.path]
return IC_details
IC_tree = dir_tree(rootdir)
解决方案
你应该看看'glob'模块:
推荐阅读
- json - Ruby:处理不符合预期的不同 JSON 响应
- sql - 当第一个 SELECT 不返回行时,从函数返回默认行
- python - 你可以使用 python 套接字进行 docker 容器通信吗?
- javascript - How encode in a right why emojis using node request module?
- firebase - 如何使用 Angular 5 写入 Firestore?
- typescript - 当我不在打字稿中使用泛型时,为什么我会丢失信息?
- java - JFXTreeTableView 和数据库 SQL
- php - 在 Woocommerce 中的产品摘要下方添加 html 代码
- java - Oauth2 服务器中的登录表单不返回到客户端 url
- python - 使用 Python / BeautifulSoup 从同名标签中抓取