我试图获得我在outlook电子邮件框中看到的所有文件夹名称的列表,通过使用以下代码:
import win32com.client
def AllFolders(folders):
my_list = []
for folder in folders:
AllFolders(folder.Folders)
print(folder.name)
my_list.append(folder.name)
return my_list
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress
z = AllFolders(outlook.Folders[user].Folders)
我的问题是:如果我删除return
,我可以看到print
返回的所有文件夹,但如果尝试返回每个文件夹的列表(基本上存储我在print
中看到的列表),我得到z
,这只是打印的第一个元素。
如何制作每个文件夹名称的列表?
您只需要将递归调用返回的列表连接到您的列表中。
我还将调用(和print()
行)移动到my_list.append()
行之后,只是为了将子文件夹添加到父文件夹之后。
import win32com.client
def AllFolders(folders):
my_list = []
for folder in folders:
print(folder.name)
my_list.append(folder.name)
my_list += AllFolders(folder.Folders)
return my_list
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
user = outlook.Application.Session.CurrentUser.AddressEntry.GetExchangeUser().PrimarySmtpAddress
z = AllFolders(outlook.Folders[user].Folders)