我正在使用win32com.client从Outlook中提取一些信息。我遍历电子邮件并将发件人的电子邮件地址存储在列表中
import win32com.client
# make connection to Outlook
outlook = win32com.client.Dispatch("Outlook.Application").GetNamespace("MAPI")
# choose fodler and set items within folder
inbox = outlook.GetDefaultFolder(6)
messages = inbox.Items
# create list of senders
sender_list = []
# loop over items and add to dataframe
for msg in messages:
if msg.Class==43:
if msg.SenderEmailType=='EX':
sender_list.append(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
else:
sender_list.append(msg.SenderEmailAddress)
然后尝试写入文件
with open('C:/Users/Desktop/test.txt', 'w') as file_handler:
for item in sender_list:
file_handler.write("{}\n".format(item))
确实创建了该列表(出于隐私目的,已删除了实际地址),但未将其写入文件,也未创建文件。
['first.last@email.com',
'first.las@email.com',
'first.las@email.com',
'first.las@email.com']
但是,如果我将上述值手动放入列表中并尝试写入,它将把该列表写入文件。
sender_list = ['first.last@email.com',
'first.las@email.com',
'first.las@email.com',
'first.las@email.com']
with open('C:/Users/Desktop/test.txt', 'w') as file_handler:
for item in sender_list:
file_handler.write("{}\n".format(item))
我还试图创建一个新的数据框并将列表添加到新列中。这样会像其他实现一样创建列表,但不会将列表添加到数据框。
# create empty dataframe
df = pd.DataFrame()
# create list of senders
sender_list = []
# loop over items and add to dataframe
for msg in messages:
if msg.Class==43:
if msg.SenderEmailType=='EX':
sender_list.append(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
# print(msg.Sender.GetExchangeUser().PrimarySmtpAddress)
else:
sender_list.append(msg.SenderEmailAddress)
# print(msg.SenderEmailAddress)
# add list to dataframe
df['Sender'] = sender_list
尝试查看df
Out: df
Empty DataFrame
Columns: []
Index: []