热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

从批量eml文件中提取附件的Python代码实现方法

本文介绍了使用Python代码从批量eml文件中提取附件的实现方法,包括获取eml附件信息、递归文件夹下所有文件、创建目的文件夹等步骤。通过该方法可以方便地提取eml文件中的附件,并保存到指定的文件夹中。

从批量eml文件中提取附件,使用方式如下

 


代码如下

1 import email
2 import os
3 import sys
4
5 #获取eml附件信息
6 def Get_Annex_Message(FilePath, Annex_Path):
7 global sum
8 try:
9 fp = open(FilePath, 'rb') #打开任意格式文件,通过email库来判断是否为eml文件
10 msg = email.message_from_binary_file(fp)
11 for part in msg.walk(): #循环信件中的每一个mime的数据块
12 if part.get_content_maintype() == 'multipart':
13 continue
14 Annex_name = part.get_filename()
15 if Annex_name: #如果附件存在名字
16 Annex_name = str(sum) + '.' + Annex_name
17 fp = open(os.path.join(Annex_Path, Annex_name), 'wb')
18 fp.write(part.get_payload(decode=True))
19 sum += 1
20
21 except Exception as e:
22 print(e)
23 return
24
25 #递归文件夹下所有文件
26 def List_Filepath(Eml_Path, Annex_Path):
27 for parent,dirnames,filenames in os.walk(Eml_Path): #遍历文件夹
28 for dirname in dirnames: #对文件夹进行递归
29 List_Filepath(dirname, Annex_Path)
30 for filename in filenames: #r对文件进行判断
31 FilePath = os.path.join(parent,filename)
32 Get_Annex_Message(FilePath, Annex_Path)
33
34 #创建目的文件夹
35 def Create_Dir(Annex_Path):
36 if os.path.exists(Annex_Path):
37 print("dir exists, Annex file will create in %s" % Annex_Path)
38 else:
39 os.mkdir(Annex_Path)
40
41 #主函数
42 def main():
43 global sum
44 sum = int(1)
45 Eml_Path = sys.argv[1] #第一个参数为eml所在文件夹
46 Annex_Path = sys.argv[2] #第二个参数为eml附件输出的路径
47 Create_Dir(Annex_Path) #创建保存附加的文件夹
48 List_Filepath(Eml_Path, Annex_Path)
49
50 if __name__ == "__main__":
51 main()
52

 


推荐阅读
  • 本文探讨了在渗透测试中信息收集阶段使用的几种端口扫描技术,包括nmap、masscan、socket、telnet及nc等工具的应用与比较。 ... [详细]
  • 本文介绍了如何通过扩展 Panel 控件来实现滚动条位置的自动保存和恢复。类似于 Page 的 MaintainScrollPositionOnPostBack 属性,我们将在自定义的 TBPanel 控件中添加相同的功能。 ... [详细]
  • 深入理解设计模式之观察者模式
    本文详细介绍了观察者模式,这是一种行为设计模式,适用于当对象状态发生变化时,需要通知其他相关对象的场景。文中不仅解释了观察者模式的基本概念,还通过Java代码示例展示了其实现方法。 ... [详细]
  • 本文详细介绍了Java集合框架中的Collection体系,包括集合的基本概念及其与数组的区别。同时,深入探讨了Comparable和Comparator接口的区别,并分析了各种集合类的底层数据结构。最后,提供了如何根据需求选择合适的集合类的指导。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • Java 架构:深入理解 JDK 动态代理机制
    代理模式是 Java 中常用的设计模式之一,其核心在于代理类与委托类共享相同的接口。代理类主要用于为委托类提供预处理、过滤、转发及后处理等功能,以增强或改变原有功能的行为。 ... [详细]
  • Java实现文本到图片转换,支持自动换行、字体自定义及图像优化
    本文详细介绍了如何使用Java实现将文本转换为图片的功能,包括自动换行、自定义字体加载、抗锯齿优化以及图片压缩等技术细节。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 利用Python实现自动化群发邮件
    本文详细介绍如何使用Python语言来实现邮件的自动群发功能,适合希望提高工作效率的技术爱好者和开发者。 ... [详细]
  • Description“第一分钟,X说,要有矩阵,于是便有了一个里面写满了\(0\)的\(n\timesm\)矩阵。第二分钟,L说,要能修改,于是便有了将左上角为\((a,b)\) ... [详细]
  • 本文介绍了如何计算给定数组中所有非质数元素的总和,并提供了多种编程语言的实现示例。 ... [详细]
  • 本文探讨了如何使用ls -lsh命令排除总大小输出,仅显示文件大小的方法,并提供了几种实现这一目标的解决方案。 ... [详细]
  • 在Java应用程序开发过程中,FTP协议被广泛用于文件的上传和下载操作。本文通过Jakarta Commons Net库中的FTPClient类,详细介绍如何实现文件的上传和下载功能。 ... [详细]
  • 本文探讨了在JavaScript中执行字符串形式代码的多种方法,包括使用eval()函数以及跨页面调用的方法。同时,文章详细介绍了JavaScript中字符串的各种常用方法及其应用场景。 ... [详细]
author-avatar
波波微博1987_704
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有