gpt4 book ai didi

python - 使用Python从邮件附件中一次性提取ZIP文件中的CSV文件

转载 作者:太空宇宙 更新时间:2023-11-03 20:22:37 25 4
gpt4 key购买 nike

我找到并修改了代码以使用 Python 从 Outlook 应用程序读取 CSV 附件文件。

我的情况是:当我请求某个时间段的数据时,他们会在单独的电子邮件中向我发送所请求时间段的每月数据(例如请求:2018年1月-2018年12月;接收:12封邮件,单个邮件每封邮件中都有 CSV 附件。)我将来自数据仓库的所有电子邮件保存在“DWH Mail”中

所有电子邮件都来自同一主题。所以我的代码将:保存指定主题中存储在“DWH Mail”中的所有 CSV 附件。

import win32com.client as client
import datetime as date
import os.path

def attach(mail_subject):
outlook = client.Dispatch("Outlook.Application").GetNamespace("MAPI")
folder = outlook.GetDefaultFolder("6").Folders["DWH Mail"]

val_date = date.date.today()
sub_target = mail_subject

for msg in folder.Items:
if msg.ReceivedTime.date() == val_date and msg.Subject == sub_target:
for att in msg.Attachments:
att.SaveASFile(os.getcwd() + "\\" + att.FileName)
print ("Mail Successfully Extracted")
break

print ("Done")

现在我可以请求包含 CSV 的 ZIP 文件,以便我可以更快地接收文件。我应该在代码中添加什么内容,以便循环从 ZIP 文件中提取并保存 CSV 文件?我没有保存 ZIP 文件,而是稍后手动解压。

我对 Python 比较陌生,所以任何帮助将不胜感激。谢谢。

最佳答案

import os
import pandas as pd
import zipfile

curDir = os.getcwd()
zf = zipfile.ZipFile(curDir + '/targetfolder/' + yourFileName + '.zip')
text_files = zf.infolist()
# list_ = []

print ("Decompressing and loading data into multiple files... ")

for text_file in text_files:
print(text_file.filename)
df = pd.read_csv(zf.open(text_file.filename)
# do df manipulations if required
df.to_csv(curDir + '/targetfolder/' + text_file.filename + '.csv')

# df = pd.concat(list_)

这将遍历所有文件并使用 zip 文件中存在的相应名称加载它们。

关于python - 使用Python从邮件附件中一次性提取ZIP文件中的CSV文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58056014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com