在Python中的嵌套字典中存储目录结构

2024-02-09

我正在尝试将目录结构存储在嵌套字典中。 目录树

├── dirA
│   ├── dirB1
│   │   └── file1.txt
│   └── dirB2
│       └── file2.txt
├── templates
│   ├── base.html
│   └── report.html
└── test.py  

嵌套字典如下:

{'dirs': {'.': {'dirs': {'dirA': {'dirs': {'dirB1': {'dirs': {},
                                                     'files': ['file1.txt']}, 
                                           'dirB2': {'dirs': {},
                                                     'files':['file2.txt']}
                                                     }                                          
                                  'files': []}, 
                         'templates':{'dirs':{},
                                  'files':['base.html', 'report.html']}},
         'files': ['test.py']}},
 'files': []}

我认为递归是实现此目的的好方法。

import os                                                 
import pprint              

pp = pprint.PrettyPrinter()
def path_to_dict(path): 
    d = {'dirs':{},'files':[]}
    name = os.path.basename(path)
    if os.path.isdir(path):
        if name not in d['dirs']:
            d['dirs'][name] = {'dirs':{},'files':[]}
        for x in os.listdir(path):
            d['dirs'][name]= path_to_dict(os.path.join(path,x))                                                 
    else:                  
        d['files'].append(name)        
    return d               

mydict = path_to_dict('.')
pp.pprint(mydict)

结果和我预想的不一样。但不知道递归哪一步出了问题。


您正在创建dict每次调用时都需要对象,你需要做的就是传递它d['dirs'][name]每次调用的值以允许其递归构造:

import os
import pprint

pp = pprint.PrettyPrinter()

def path_to_dict(path, d):

    name = os.path.basename(path)

    if os.path.isdir(path):
        if name not in d['dirs']:
            d['dirs'][name] = {'dirs':{},'files':[]}
        for x in os.listdir(path):
            path_to_dict(os.path.join(path,x), d['dirs'][name])
    else:
        d['files'].append(name)
    return d


mydict = path_to_dict('.', d = {'dirs':{},'files':[]})

pp.pprint(mydict)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Python中的嵌套字典中存储目录结构 的相关文章

  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • Django 代理模型的继承和多态性

    我正在开发一个我没有启动的 Django 项目 我面临着一个问题遗产 我有一个大模型 在示例中简化 称为MyModel这应该代表不同种类的物品 的所有实例对象MyModel应该具有相同的字段 但方法的行为根据项目类型的不同而有很大差异 到目
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • SQLAlchemy 通过关联对象声明式多对多自连接

    我有一个用户表和一个朋友表 它将用户映射到其他用户 因为每个用户可以有很多朋友 这个关系显然是对称的 如果用户A是用户B的朋友 那么用户B也是用户A的朋友 我只存储这个关系一次 除了两个用户 ID 之外 Friends 表还有其他字段 因此
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • PyUSB 1.0:NotImplementedError:此平台不支持或未实现操作

    我刚刚开始使用 pyusb 基本上我正在玩示例代码here https github com walac pyusb blob master docs tutorial rst 我使用的是 Windows 7 64 位 并从以下地址下载 z
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 从 Flask 访问 Heroku 变量

    我已经使用以下命令在 Heroku 配置中设置了数据库变量 heroku config add server xxx xxx xxx xxx heroku config add user userName heroku config add
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 解释 Python 中的数字范围

    在 Pylons Web 应用程序中 我需要获取一个字符串 例如 关于如何做到这一点有什么建议吗 我是 Python 新手 我还没有找到任何可以帮助解决此类问题的东西 该列表将是 1 2 3 45 46 48 49 50 51 77 使用
  • Conda SafetyError:文件大小不正确

    使用创建 Conda 环境时conda create n env name python 3 6 我收到以下警告 Preparing transaction done Verifying transaction SafetyError Th
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 从列表指向字典变量

    假设你有一个清单 a 3 4 1 我想用这些信息来指向字典 b 3 4 1 现在 我需要的是一个常规 看到该值后 在 b 的位置内读写一个值 我不喜欢复制变量 我想直接改变变量b的内容 假设b是一个嵌套字典 你可以这样做 reduce di
  • Python Selenium:如何在文本文件中打印网站上的值?

    我正在尝试编写一个脚本 该脚本将从 tulsaspca org 网站获取以下 6 个值并将其打印在 txt 文件中 最终输出应该是 905 4896 7105 23194 1004 42000 放置的动物 的 HTML span class
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • 网站与自有API之间的认证

    以前可能有人问过这个问题 所以我先致歉 我建立了一个网站并建立了一个 API 该 API 将来也将被移动应用程序使用 我两者都拥有 所以我很确定两条腿和三条腿的 OAuth 不适合我 API 的部分内容可供全世界访问 而其他部分则受到保护并
  • 简单的 Python Pandas EMA (ewma)?

    我编写了一些代码来构建自己的 EMA MACD 但决定尝试一下 Pandas 我使用下面这个网站作为对 EMA 的基本了解 并尝试让 pandas 给我相同的答案 以确保我正确使用 pandas http stockcharts com s
  • 为什么我需要一个用于自动连接/注入字段的设置器?

    我有一颗豆子
  • 解决静态断言中的不完整类型

    当表达式取决于类类型本身时 有没有办法在类内部进行 static assert 也许延迟评估直到类型完成或模板实例化之后 示例代码 include
  • cURL - 构造请求以验证服务器发送的事件

    我是 cURL 和服务器发送事件的新手 我知道如何构建一个简单的GET POST使用 cURL 请求并获取响应 另外 理论上我知道服务器发送的事件是通过创建事件源侦听器来处理的 但我不确定如何继续使用 cURL 验证任何此类 API 任何指
  • 在Android中使用EditText上的TextWatcher实时计算总计和总和?

    在这里 我想采用来自我的数据库的默认值 并将 Text 设置为该值并计算净费率和总计 否则如果用户编辑费率或收取费用 我想根据该值计算净费率和总计即时的 这是我用于计算和显示值的代码 private void showItem String
  • 如何在 TFS Build 2010 中进行构建定义,可配置 w.r.t 输入变量值和“要构建的项目”

    我们使用 TFS Build 2010 进行构建 我们有两个源代码分支 假设branchA 和branchB Now as a part of the build definition we set the projects to buil
  • 如何让 jQuery 在失败时自动重试 load()?

    我正在页面上的许多地方通过 jquery load 进行一些内容替换 在我的开发服务器上一切正常 在我的实时服务器上 有时它会给我一个 请求无效 错误 我可以在 firebug 中看到该错误 我认为服务器已经不堪重负 或者某些缓存模块可能与
  • Github Actions:检查步骤状态

    我在 CI 工作中的一些步骤可能会引发错误 我不想在出现错误的每个步骤上重新启动工作流程 并希望转到检查这些步骤的最后一步并以失败的方式完成此作业 但我无法获取之前步骤的状态信息 name CI on pull request jobs m
  • 为什么圆圈在碰撞时会振动(画布)

    我一直在创建 agar io 的克隆 但我不明白为什么圆圈相互接触时会开始振动 下面是我的代码 var canvas ctx width innerWidth height innerHeight mouseX 0 mouseY 0 var
  • 您使用什么数据挖掘工具? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • TYPO3:为一个扩展设置多个存储pid

    我构建了一个扩展 它有一个 详细信息 表 其中包含包含内联到另一个对象的标题和描述的详细信息 现在新的详细信息存储在与对象相同的 pid 中 但我想更改它 这个问题 https stackoverflow com questions 151
  • 结合使用filter()和includes()来获得部分匹配

    我有一个包含我想要搜索的对象的数组 可搜索数组如下所示 value 0 label john value 1 label johnny value 2 label peter value 3 label peterson 我使用 Lodas
  • Applicative 之于 monad 就像 X 之于 comonad

    我们能解这个方程的 X 吗 Applicative 之于 monad 就像 X 之于 comonad 想了想 我觉得这其实是一个倒退的问题 有人可能会认为ComonadApply https hackage haskell org pack
  • Electron 中的自定义 HTML 对话框

    如何 或者甚至可能 在 Electron 中使用自定义 HTML 对话框 我知道 Electron 提供了某些对话框 showMessageDialog showErrorDialog 但这些似乎不允许自定义 HTML 我不想使用本机 HT
  • 时间:2019-03-17 标签:c#mvvm将视图绑定到带标题的tabcontrol

    我有一个带有主视图的 wpf 程序 Window 其中包含一个TabControl来展示几个不同的UserControl意见 子视图 每个选项卡中一个 每个视图都有一个关联的视图模型 我希望绑定TabControl这样我只需要加载一个新的s
  • 如何将所有匹配行拉入一个缓冲区?

    如何将所有匹配的行拉入缓冲区 给定一个如下文件 match 1 skip skip match 2 match 3 skip 我希望能够发出一个命令将与模式匹配的所有行 在本例中为 match 提取到单个缓冲区中 以便我可以将其放入另一个文
  • 将Class 添加到 getElementsByClassName 数组

    我需要一点帮助 因为我对 getElementsByClassName 感到沮丧 我有一个 svg 地图 其中包含带有类的路径 我现在需要列出某个类别的所有内容并添加另一个类别 现在我有 var testarray document get
  • Phonegap 2.4 Android Proguard 配置

    我已经将构建从 Phonegap Cordova 2 0 升级到 2 4 并且在开发中一切正常 直到我真正开始测试最终发布的 apk 在浪费了大量时间之后 我发现由于某种原因 现在当我运行构建时 我的 proguard 配置正在以某种方式破
  • 在Python中的嵌套字典中存储目录结构

    我正在尝试将目录结构存储在嵌套字典中 目录树 dirA dirB1 file1 txt dirB2 file2 txt templates base html report html test py 嵌套字典如下 dirs dirs dir