Python迭代未知文件夹

时间:2014-05-02 11:55:05

标签: python loops iteration pst

我一直在使用兑换dll Redemption来尝试计算pst文件中的消息项。我缺乏python知识意味着我目前正在做的事情有可能完全错过项目。看来,要迭代pst文件中层次结构中的文件夹项,您必须首先通过兑换/ 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中每个文件夹中的所有邮件。任何帮助都非常感谢。感谢

1 个答案:

答案 0 :(得分: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)