0

我一直在使用 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 产品,但我缺乏 python 知识阻止我查看这是否是正确的答案或我如何可以用它来实现我需要的;这是为了确保我已经计算了 pst 中每个文件夹中的所有邮件项目。非常感谢任何帮助。谢谢

4

1 回答 1

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)
于 2014-05-02T12:06:38.710 回答