【问题标题】:Python iteration over unknown folders对未知文件夹的 Python 迭代
【发布时间】:2014-05-02 11:55:05
【问题描述】:

我一直在使用 redemption dll Redemption 来尝试计算 pst 文件中的消息项。我缺乏 Python 知识意味​​着我目前正在做的事情有可能完全错过项目。看来,要在 pst 文件中迭代层次结构中的文件夹项目,您必须首先通过 redemption/Microsoft folder.count 枚举文件夹计数。获得计数后,我会进入每个文件夹以计算该文件夹中的项目。但是,嵌套的子文件夹结构是可变的,每个文件夹深处可能有 5、10 个或更多文件夹,我不知道该停在哪里。

Inbox
 Personal
  Dad
  Mum
Work
Sent items
  Archive
  Old Mail
Outbox
Junk Items

我一直在使用 for 循环;像这样计算子文件夹并提供计数不为0,递减以计算文件夹项目

If folder is not 0:
  for folder in range(root.folders.count):
  folder+=1
  messageITEMS=root.folders(folder).item.count 

但这可能意味着我错过了 pst 层次结构中的某个子文件夹。我需要继续循环,从一个文件夹删除到另一个文件夹,直到子文件夹计数 = 0。我已经阅读了Itertools product,但我缺乏 python 知识阻止我查看这是否是正确的答案或如何我可以用它来实现我需要的;这是为了确保我已经计算了 pst 中每个文件夹中的所有邮件项目。非常感谢任何帮助。谢谢

【问题讨论】:

    标签: python loops iteration pst


    【解决方案1】:

    听起来您想将所有目录和子目录中的消息数相加。 文件夹目录实际上是一棵树——一个文件夹可以包含许多分支文件夹。遍历树最好通过递归来完成。

    def count_messages(folder):
        messages = folder.item.count
        for sub_folder in folder.folders:
            messages += count_messages(sub_folder)
        return messages
    
    total_messages = count_messages(root)
    

    【讨论】:

    • 嘎啊!!这就是我喜欢这个网站的原因。现在很明显你已经写了@Kevin ..在过去的几个小时里,我已经有几次差点用锤子穿过我的笔记本电脑了。非常感谢。完美运行。
    猜你喜欢
    • 2017-04-12
    • 1970-01-01
    • 2017-08-02
    • 1970-01-01
    • 2017-04-13
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多