如何在 GtkTreeView 小部件中列出目录层次结构?

2023-12-06

我正在尝试在 pyGTK 中生成分层目录列表。

目前,我有以下目录树:

/root
    folderA
        - subdirA
            - subA.py
        - a.py

    folderB
        - b.py 

我写了一个几乎可以工作的函数:

def go(root, piter=None):

    for filename in os.listdir(root):
        isdir = os.path.isdir(os.path.join(root, filename))
        piter = self.treestore.append(piter, [filename])    

        if isdir == True:
            go(os.path.join(root, filename), piter)

This is what i get when i run the app:
alt text

我还认为我的函数效率低下,我应该使用 os.walk(),因为它已经存在用于此目的。

我怎样才能使用 pyGTK 生成目录树,以及什么是正确/最有效的方法?

- -编辑 - -我最终使用的有效代码块是:

parents = {}
        for dir, dirs, files in os.walk(root):
            for subdir in dirs:
                parents[os.path.join(dir, subdir)] = self.treestore.append(parents.get(dir, None), [subdir])
            for item in files:
                self.treestore.append(parents.get(dir, None), [item])

关于表演,这是常见问题解答。 关于你的算法:当你达到subdirA piter指着subdirA,在下一次迭代中,当您达到a.py piter仍然指向subdirA.

正如你所说,使用os.walk.

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

如何在 GtkTreeView 小部件中列出目录层次结构? 的相关文章

随机推荐

  • 当规则设置为“仅预览”时,Cloud Armor 日志不是很清楚

    我正在使用 Cloud Armor 部署 WAF 我意识到可以在 仅预览 模式下创建规则 并且 Cloud Logging 中有 Cloud Armor 条目 问题是 当我创建 仅预览 规则并且该规则与某些请求匹配时 我无法在日志中区分与某
  • 确保客户端对集合的访问安全

    我有一个运行良好的流星应用程序原型 但目前非常不安全 我需要显示与当前登录用户匹配的用户列表 首先 我决定发布所有用户 将字段限制为过滤客户端用户列表所需的字段 Meteor publish users function return Me
  • 在 C#/ASP.NET 中获取 POST 数据

    我正在尝试获取 POST 数据 但运气不佳 我的代码如下 当我单击表单按钮时 什么也没有发生 我预计至少我的 IDE 会崩溃A Ret 但什么也没发生 文件测试 cs using System Web public class A publ
  • 使用Python计算多边形形状文件中的点数

    我有一个美国的多边形形状文件 由各个州组成作为它们的属性值 此外 我有数组存储我也感兴趣的点事件的纬度和经度值 本质上 我想 空间连接 点和多边形 或执行检查以查看每个多边形 即状态 点在 然后将每个状态中的点数相加 以找出哪个状态具有最多
  • 唤醒锁未打开屏幕?帮助?

    我有一个信号让我的应用程序休眠指定的分钟数 使用 AlarmManager 然后将其唤醒 一切正常 只是屏幕不亮 我正在使用 BroadcastReceiver 类中的唤醒锁 KeyguardManager key KeyguardMana
  • 为什么 Java 有基数限制?

    我注意到 Java 中基数的最大限制是基数 36 这是一个任意的限制 还是Java有理由以这种方式限制基数 它是十进制位数 10 加上字母表中的字母数 26 如果允许基数为 37 则必须选择一个新字符来表示第 37 位数字 虽然它肯定会是p
  • 评估 Spark 广播变量的最大大小

    我正在尝试测量可以使用 Spark 广播广播的变量的最大大小 我没有找到关于这个问题的任何解释 有人测量过吗 Spark有广播大小的配置吗 广播限制现已增加至 8 GB 你可以找到详细信息here
  • 如何使用 MailboxProcessor 创建作业队列?

    我正在尝试使用 MailboxProcessor 建模异步作业处理框架 我的要求是启动 停止 暂停和恢复作业处理器 我可以使用 MailboxProcessor 构建暂停 恢复功能吗 另外我应该能够停止和启动 我正在尝试模仿 Windows
  • 致命错误:尝试解析 JSON 时,在 Swift 中展开可选值时意外发现 nil

    我尝试构建一个基于文档的 Cocoa 应用程序 当我尝试解析 JSON 时readFromData ofType error 方法 我得到一个错误 fatal error unexpectedly found nil while unwra
  • 使用map()和mutate()循环多个变量和参数

    我无法弄清楚如何有效地映射表中的多个参数和变量以生成新变量 在 真实 版本中 我基本上有一个数学函数生成中心估计 并且我需要运行一系列不同参数的敏感性测试 我正在尝试弄清楚如何在 tidyverse 中做到这一点 看起来 map 和 mut
  • 具有多个详细视图控制器的 UISplitViewController

    我正在制作一个 splitView 应用程序 我想要不同的详细视图控制器 我进行了很多研究 发现使用苹果 MultipleDetailView 控制器 但它没有完全采用 所以任何人都可以使用它 所以有什么方法可以完成这个意味着不同所有人的d
  • CakePHP AJAX 布局

    我正在使用 CakePHP 应用程序和 jQuery Mobile 在 CakePHP 应用程序中 RequestHandler 已打开 现在 jQuery Mobile 将所有请求作为 ajax 请求 但需要完整的页面 不仅是我视图中的内
  • 在 Spring MVC 中有条件地渲染 HTML

    是否有任何标签可以有条件地渲染 HTML 块 例如 Struts 有
  • 在 UIAlertView(iOS、Xamarin)上添加 UITextView,而不使用任何第三方库

    我想在 iOS 中显示一个对话框并添加一个UITextView到对话框的视图 这UITextViewtextView 包含带有电子邮件 电话和 url 的可点击链接的文本 我能够触发对话框 但只能使用标题和 确定 按钮 没有文本视图添加到对
  • Java,隐式调用重写方法

    现在在一些Java代码中我有这样的东西 class A void f A f class B extends A Override void f do some stuff super f class C extends B Overrid
  • 无法将 java.util.HashMap 类型的值转换为 String

    I have no idea how i can render this JSON on logcat 从firebase实时数据库获取数据的源代码 FirebaseDatabase database FirebaseDatabase ge
  • 为什么浮动操作按钮位于 BottomBar 后面

    我想要浮动操作按钮位于BottomBar中间和前面 而不是后面 请指导我解决这个问题我的图层代码如下
  • MVC 中的保存文件对话框

    如何在 MVC 应用程序中创建保存文件对话框 我找不到任何例子 提前致谢 通过使用Content Disposition返回要下载的文件时标题到附件 public ActionResult Download return File c wo
  • 重写 LogicalPlan 以从聚合中下推 udf

    我定义了一个 UDF 它将输入值加一 名为 inc 这是我的 udf 的代码 spark udf register inc x Long gt x 1 这是我的测试sql val df spark sql select sum inc va
  • 如何在 GtkTreeView 小部件中列出目录层次结构?

    我正在尝试在 pyGTK 中生成分层目录列表 目前 我有以下目录树 root folderA subdirA subA py a py folderB b py 我写了一个几乎可以工作的函数 def go root piter None f